diff options
Diffstat (limited to 'exercises/022_errors2.zig')
-rw-r--r-- | exercises/022_errors2.zig | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/exercises/022_errors2.zig b/exercises/022_errors2.zig new file mode 100644 index 0000000..fa0eafa --- /dev/null +++ b/exercises/022_errors2.zig @@ -0,0 +1,29 @@ +// +// A common case for errors is a situation where we're expecting to +// have a value OR something has gone wrong. Take this example: +// +// var text: Text = getText('foo.txt'); +// +// What happens if getText() can't find 'foo.txt'? How do we express +// this in Zig? +// +// Zig lets us make what's called an "error union" which is a value +// which could either be a regular value OR an error from a set: +// +// var text: MyErrorSet!Text = getText('foo.txt'); +// +// For now, let's just see if we can try making an error union! +// +const std = @import("std"); + +const MyNumberError = error{TooSmall}; + +pub fn main() void { + var my_number: ??? = 5; + + // Looks like my_number will need to either store a number OR + // an error. Can you set the type correctly above? + my_number = MyNumberError.TooSmall; + + std.debug.print("I compiled!", .{}); +} |