Oh this was fixed: when #Rust introduced the ? operator the generated code was more generic but didn't optimise as well as code using its predecessor the try macro. Well, I just saw a pointer to this PR from August that fixed it! https://github.com/rust-lang/rust/pull/100693