It is sometimes very useful to have methods on options that can return a result which can then subsequently be tried away using ?.
So I propose adding resulting_... methods such as resulting_and_then which acts like and_then currently but has the following signature
pub fn resulting_and_then<U, E, F>(self, f: F) -> Result<Option<U>, E> where
F: FnOnce(T) -> Result<Option<U>, E>