polars_utils/
option.rs

1pub trait OptionTry<T>: Sized {
2    fn try_map<U, E>(self, f: impl FnOnce(T) -> Result<U, E>) -> Result<Option<U>, E>;
3}
4
5impl<T> OptionTry<T> for Option<T> {
6    fn try_map<U, E>(self, f: impl FnOnce(T) -> Result<U, E>) -> Result<Option<U>, E> {
7        match self {
8            None => Ok(None),
9            Some(v) => f(v).map(Some),
10        }
11    }
12}