const std = @import("std");
/// Doc comment for Point.
const Point = struct {
x: f64,
y: f64,
pub fn init(x: f64, y: f64) Point {
return Point{ .x = x, .y = y };
}
pub fn length(self: Point) f64 {
// nested block comment via line comments
return std.math.sqrt(self.x * self.x + self.y * self.y);
}
};
const Error = error{OutOfMemory, InvalidInput};
fn mayFail(n: i32) Error!i32 {
if (n < 0) {
return Error.InvalidInput;
}
return n * 2;
}
pub fn main() !void {
var allocator = std.heap.page_allocator;
var list = std.ArrayList(i32).init(allocator);
defer list.deinit();
const p = Point.init(3.0, 4.0);
std.debug.print("length = {d}\n", .{p.length()});
const val = mayFail(5) catch |err| switch (err) {
Error.InvalidInput => {
std.debug.print("bad input\n", .{});
return;
},
else => return err,
};
for (0..val) |i| {
try list.append(@intCast(i));
}
const s = "a raw string with \"escapes\" and \\backslash";
_ = s;
}