## Full example

    const std = @import("std");

    pub fn main() !void {
        // If this program is run without stdout attached, exit with an error.
        const stdout_file = try std.io.getStdOut();
        // If this program encounters pipe failure when printing to stdout, exit
        // with an error.
        try stdout_file.write("Hello, world!\n");
    }

    const warn = @import("std").debug.warn;

    pub fn main() void {
        warn("Hello, world!\n");
    }

    const assert = @import("std").debug.assert;

    test "comments" {
        // Comments in Zig start with "//" and end at the next LF byte (end of line).
        // The below line is a comment, and won't be executed.

        //assert(false);

        const x = true;  // another comment
        assert(x);
    }

    /// A structure for storing a timestamp, with nanosecond precision (this is a
    /// multiline doc comment).
    const Timestamp = struct {
        /// The number of seconds since the epoch (this is also a doc comment).
        seconds: i64,  // signed so we can represent pre-1970 (not a doc comment)
        /// The number of nanoseconds past the second (doc comment again).
        nanos: u32,

        /// Returns a `Timestamp` struct representing the Unix epoch; that is, the
        /// moment of 1970 Jan 1 00:00:00 UTC (this is a doc comment too).
        pub fn unixEpoch() Timestamp {
            return Timestamp{
                .seconds = 0,
                .nanos = 0,
            };
        }
    };