IMO the issue here is with the question mark operator. If the Rust question mark operator was more like Kotlin's this wouldn't be an issue.
You can also use ? with Option:
fn process_item(input: Option<Item>) -> Option<Item> {
let item = input?;
Some(item + 3)
}[0] where many conceive of the operation as `?` being a modifying operator to `.`
fun process_item(input: Item?) -> Item? {
input?.plus(3)
}
This would have to be modified in rust to apply to both error and option types, as well as working on stuff other than the . operator, but I think it could be made to work.
The main difference is that the ?. operator in kotlin works at the expression level, instead of the function level.