the ? operator cannot be applied to type &std::option::Option<...>
= help: the trait std::ops::Try is not implemented for &std::option::Option<...>
= note: required by std::ops::Try::into_result
And always ended up using a if let Some(...) = ... { ... } else { return None; }.
Maybe you need to update your compiler? (rustup update).
You are trying to apply ? on a reference of Option. You need to dereference it (*foo). There's no need for a &Option. If that's an function argument, please accept Option<&T> where T is of course your concrete type, instead of &Option<T>.