diff options
Diffstat (limited to 'std/option.zc')
| -rw-r--r-- | std/option.zc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/std/option.zc b/std/option.zc index 5652bd7..11b4428 100644 --- a/std/option.zc +++ b/std/option.zc @@ -23,12 +23,26 @@ impl Option<T> { return !self.is_some; } + fn forget(self) { + memset(&self.val, 0, sizeof(T)); + } + fn unwrap(self) -> T { if (!self.is_some) { !"Panic: unwrap called on None"; exit(1); } - return self.val; + var v = self.val; + memset(&self.val, 0, sizeof(T)); + return v; + } + + fn unwrap_ref(self) -> T* { + if (!self.is_some) { + !"Panic: unwrap_ref called on None"; + exit(1); + } + return &self.val; } fn unwrap_or(self, def_val: T) -> T { |
