diff --git a/.gitignore b/.gitignore index adb36c8..2dab60f 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -*.exe \ No newline at end of file +*.exe +.vscode/ \ No newline at end of file diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..7aed502 --- /dev/null +++ b/README.rst @@ -0,0 +1,23 @@ +op +== +Generic, exception-free return values. + +OP stands for "Operation Result". + +This module contains a generic type that can be used as a return type +for operations that could fail. It adds additional messages to the result. +This module improves upon the `options module`_ +in that additional messages can be passed along with the presence or absence of a value. + +Basic Usage +----------- +.. code-block:: nim + proc divide(a, b: int): OP[float] = + ## This could fail + if b == 0: + return fail "Cannot divide by zero!" + else: + return ok a / b # Wrap the result + let r = divide(42, 0) + assert r.isOk == false + assert r.error == "Cannot divide by zero!" \ No newline at end of file