Rustic Result
Result monad for Elixir inspired by Rust Result type.
Installation
This package can be installed by adding rustic_result
to your list of
dependencies in mix.exs
:
def deps do
[
{:rustic_result, "~> 0.1.0"}
]
end
Usage
import Rustic.Result
ok(42)
#
err(:not_found)
#
ok(1) |> and_then(fn v -> ok(v + 1) end)
# ok(2)
ok(1) |> and_then(fn _ -> err(:not_found) end)
# err(:not_found)
err(:not_found) |> and_then(fn v -> ok(v + 1) end)
# err(:not_found)
ok(1) |> or_else(fn _ -> ok(2) end)
# ok(2)
err(:not_found) |> or_else(fn :not_found -> ok(1) end)
# ok(1)
err(:not_found) |> or_else(fn :not_found -> err(:invalid) end)
# err(:invalid)
ok(1) |> unwrap!()
# 1
err(:not_found) |> unwrap!()
# ** (Rustic.Result.UnhandledError) Expected an ok result, ":not_found" given.