From ba5ee94871e670fbe1ea091dd5731e593df0b29f Mon Sep 17 00:00:00 2001 From: Zuhaitz Méndez Fernández de Aránguiz Date: Sun, 11 Jan 2026 17:47:30 +0000 Subject: Some std for you --- std/result.zc | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 std/result.zc (limited to 'std/result.zc') 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 { + is_ok: bool; + val: T; + err: char*; +} + +impl Result { + fn Ok(v: T) -> Result { + return Result { is_ok: true, val: v, err: 0 }; + } + + fn Err(e: char*) -> Result { + return Result { 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; + } +} -- cgit v1.2.3