Yep! That is the rust naming convention for monadic bind operations when it involves a single item. You'll also find an and_then on things like Future. If there are several items (e.g. Iterator) they will typically call it flat_map.
.unwrap() is for panicking, so you can't use it, unless you want to cause a panic.
When you have Result, you should try to use ? on it:
let option = optionresult?;
and then proceed to how you'd handle the option.
If None is an error, then:
let value = option.or_or(Error::StuffIsMissing)?; // make the error type yourself
If you don't care about errors, just want to get the value, then:
if let Ok(Some(value)) = optionresult {
}
or if you want to handle all errors and None in the same way:
let optionoption = optionresult.ok(); // strips the error out
let option = optionoption.and_then(|x| x); // changes Option<Option<T>> to Option<T>
let value = option.unwrap_or_default(); // there's a bunch more graceful unwrap versions