///|
fn[T] moon_result(f : () -> T raise Error) -> Result[T, Error] {
try f() catch {
error => Err(error)
} noraise {
value => Ok(value)
}
}
///|
async fn[T] moon_async_result(
f : async () -> T raise Error,
) -> Result[T, Error] {
try f() catch {
error => Err(error)
} noraise {
value => Ok(value)
}
}