aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/exercises/22_errors2.zig
blob: 0f8571fd5f49974c9545f9cdc1822a7c6fd89fc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//
// 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!", .{});
}