From 0d7ce8efdedaf184680cb7268721fca0af947a74 Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Wed, 12 Jan 2022 10:49:30 +0100 Subject: [PATCH] Provide conversion to string `$` for Results --- questionable/results.nim | 6 ++++++ testmodules/results/test.nim | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/questionable/results.nim b/questionable/results.nim index 3174e34..5d61945 100644 --- a/questionable/results.nim +++ b/questionable/results.nim @@ -73,6 +73,12 @@ proc isFailure*[T](value: ?!T): bool = value.isErr +proc `$`*[T](value: ?!T): string = + if value.isSuccess: + "success(" & $(!value) & ")" + else: + "failure(\"" & $(value.error.msg) & "\")" + template `->?`*[T,U](value: ?!T, expression: ?!U): ?!U = if value.isFailure: U.failure(value.error) diff --git a/testmodules/results/test.nim b/testmodules/results/test.nim index 66aa2d6..5059d3a 100644 --- a/testmodules/results/test.nim +++ b/testmodules/results/test.nim @@ -14,6 +14,10 @@ suite "result": check (?!string is Result[string, ref CatchableError]) check (?!seq[bool] is Result[seq[bool], ref CatchableError]) + test "conversion to string $ works for ?!Types": + check $42.success == "success(42)" + check $(int.failure "some error") == "failure(\"some error\")" + test "! gets value or raises Defect": check !42.success == 42 expect Defect: discard !int.failure error