diff options
author | bptato <nincsnevem662@gmail.com> | 2025-01-14 02:00:16 +0100 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2025-01-14 02:00:16 +0100 |
commit | 50a7f14b20fec094ab397a5f04d869f06b2c54d2 (patch) | |
tree | a6c3886e0199ae9a45b8ce2ddebaa3aee9a6ba5f | |
parent | 5cb905d9f07b651fc8a277ea633a44d9ac82f829 (diff) | |
download | chawan-50a7f14b20fec094ab397a5f04d869f06b2c54d2.tar.gz |
test: update opt
-rw-r--r-- | test/types/opt.nim | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/test/types/opt.nim b/test/types/opt.nim index cdf69633..de6e001b 100644 --- a/test/types/opt.nim +++ b/test/types/opt.nim @@ -30,7 +30,7 @@ type template ok*[E](t: type Err[E]): Err[E] = Err[E](has: true) -template ok*[T, E](t: type Result[T, E], x: T): Result[T, E] = +template ok*[T, E](t: type Result[T, E]; x: T): Result[T, E] = Result[T, E](val: x, has: true) template ok*[T](x: T): auto = @@ -39,13 +39,7 @@ template ok*[T](x: T): auto = template ok*(): auto = ok(typeof(result)) -template ok*[T, E](res: var Result[T, E], x: T) = - res = Result[T, E](has: true, val: x) - -template ok*[E](res: var Result[void, E]) = - res = Result[void, E](has: true) - -template err*[T, E](t: type Result[T, E], e: E): Result[T, E] = +template err*[T, E](t: type Result[T, E]; e: E): Result[T, E] = Result[T, E](has: false, ex: e) template err*[T](t: type Result[T, ref object]): auto = @@ -57,12 +51,6 @@ template err*[T](t: type Result[T, void]): Result[T, void] = template err*(): auto = err(typeof(result)) -template err*[T, E](res: var Result[T, E], e: E) = - res = Result[T, E](has: false, ex: e) - -template err*[T, E](res: var Result[T, E]) = - res = Result[T, E](has: false) - template err*[E](e: E): auto = err(typeof(result), e) @@ -73,23 +61,21 @@ template opt*(t: typedesc): auto = err(Result[t, void]) template opt*[T, E: not void](r: Result[T, E]): Opt[T] = - if r.isOk: + if r.isSome: Opt[T].ok(r.get) else: Opt[T].err() -template isOk*(res: Result): bool = res.has -template isErr*(res: Result): bool = not res.has -template isSome*(res: Result): bool = res.isOk -template isNone*(res: Result): bool = res.isErr +template isSome*(res: Result): bool = res.has +template isNone*(res: Result): bool = not res.has func get*[T, E](res: Result[T, E]): T {.inline.} = res.val func get*[T, E](res: var Result[T, E]): var T = res.val -func get*[T, E](res: Result[T, E], v: T): T = +func get*[T, E](res: Result[T, E]; v: T): T = if res.has: res.val else: v -func error*[T, E](res: Result[T, E]): E {.inline.} = res.ex +func error*[T, E](res: Result[T, E]): lent E {.inline.} = res.ex template valType*[T, E](res: type Result[T, E]): auto = T template errType*[T, E](res: type Result[T, E]): auto = E |