diff options
| author | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 17:47:30 +0000 |
|---|---|---|
| committer | Zuhaitz Méndez Fernández de Aránguiz <zuhaitz@debian> | 2026-01-11 17:47:30 +0000 |
| commit | ba5ee94871e670fbe1ea091dd5731e593df0b29f (patch) | |
| tree | 3b706a9ab11effa4acb094482f3d657c986ef501 /std/result.zc | |
| parent | aba9191ab3ef0699b0f9507ee3d03161f9ee7771 (diff) | |
Some std for you
Diffstat (limited to 'std/result.zc')
| -rw-r--r-- | std/result.zc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/std/result.zc b/std/result.zc new file mode 100644 index 0000000..b043162 --- /dev/null +++ b/std/result.zc @@ -0,0 +1,42 @@ + +import "./core.zc" + +struct Result<T> { + is_ok: bool; + val: T; + err: char*; +} + +impl Result<T> { + fn Ok(v: T) -> Result<T> { + return Result<T> { is_ok: true, val: v, err: 0 }; + } + + fn Err(e: char*) -> Result<T> { + return Result<T> { is_ok: false, val: 0, err: e }; + } + + fn is_ok(self) -> bool { + return self.is_ok; + } + + fn is_err(self) -> bool { + return !self.is_ok; + } + + fn unwrap(self) -> T { + if (!self.is_ok) { + !"Panic: unwrap called on Err: {self.err}"; + exit(1); + } + return self.val; + } + + fn expect(self, msg: char*) -> T { + if (!self.is_ok) { + !"Panic: {msg}: {self.err}"; + exit(1); + } + return self.val; + } +} |
