README.md
# whatever
[](https://hex.pm/packages/whatever)
[](https://hexdocs.pm/whatever/)
```sh
gleam add whatever@1
```
## Usage
```gleam
import whatever
import whatever/result as wres
import gleam/string
import gleam/io
type MyError {
MyError
}
type AnotherError {
AnotherError
}
pub fn main() -> Nil {
case maybe_fail(True) {
wres.Error(err) -> {
let err = whatever.downcast(whatever.ToType("MyError"), err)
io.println(string.inspect(err)) // Some(MyError)
}
_ -> Nil
}
case maybe_fail(False) {
wres.Error(err) -> {
let err = whatever.downcast(whatever.ToType("MyError"), err)
io.println(string.inspect(err)) // None
}
_ -> Nil
}
}
pub fn maybe_fail(is_failure: Bool) -> wres.Result(Nil) {
case is_failure {
True -> whatever.from(fail())
False -> whatever.from(another_fail())
}
}
fn fail() -> Result(Nil, MyError) {
Error(MyError)
}
fn another_fail() -> Result(Nil, AnotherError) {
Error(AnotherError)
}
```