pub trait TryOpt<T>: Sized + Into<Option<T>> { fn try_map<F, U, E>(self, op: F) -> Result<Option<U>, E> where Self: Into<Option<T>>, F: FnOnce(T) -> Result<U, E>, { ... } }