// // Believe it or not, sometimes things go wrong in programs. // // In Zig, an error is a value. Errors are named so we can identify // things that can go wrong. Errors are created in "error sets", which // are just a collection of named errors. // // We have the start of an error set, but we're missing the condition // "TooSmall". Please add it where needed! const MyNumberError = error{ TooBig, ???, TooFour, }; const std = @import("std"); pub fn main() void { var nums = [_]u8{ 2, 3, 4, 5, 6 }; for (nums) |n| { std.debug.print("{}", .{n}); const number_error = numberFail(n); if (number_error == MyNumberError.TooBig) { std.debug.print(">4. ", .{}); } if (???) { std.debug.print("<4. ", .{}); } if (number_error == MyNumberError.TooFour) { std.debug.print("=4. ", .{}); } } std.debug.print("\n", .{}); } // Notice how this function can return any member of the MyNumberError // error set. fn numberFail(n: u8) MyNumberError { if (n > 4) return MyNumberError.TooBig; if (n < 4) return MyNumberError.TooSmall; // <---- this one is free! return MyNumberError.TooFour; }