Rusty results is a Python library for dealing with result and optional types inspired by rust standard library.
It exposes two main types with two constructors each one.
Result[T, E]
is the type used for returning and propagating errors. It is based in the variants, Ok(T)
, representing
success and containing a value, and Err(E)
, representing error and containing an error value.
Option[T]
represents an optional value: every Option
is either Some(T)
that contains a value, or Empty()
that does not.
Option types have a number of uses:
- Initial values
- Return values for functions that are not defined over the entire input range (partial function)
- Return value for otherwise reporting simple errors, where Empty is returned on error.
- Optional struct fields
- Optional function arguments
Use the package manager pip to install rusty results.
pip install rusty_results
from rusty_results import Option, Some, Empty, Result, Ok, Err, UnwrapException
"""
Example on pattern matching handling of Result
"""
from rusty_results import Result, Ok, Err
def divide(a: int, b: int) -> Result[int, str]:
if b == 0:
return Err("Cannot divide by zero")
return Ok(a // b)
if __name__ == "__main__":
values = [(10, 0), (10, 5)]
for a, b in values:
divide_result = divide(a, b)
match divide_result:
case Ok(value):
print(f"{a} // {b} == {value}")
case Err(e):
print(e)
You can find more examples in the /examples
folder.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.