error[E0308]: mismatched types --> $DIR/issue-102964.rs:5:41 | LL | fn bar_function(function: Foo) -> RcFoo { | ------------ ^^^^^^^^ expected `Rc<&dyn Fn(&T)>`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | = note: expected struct `Rc<&dyn for<'a> Fn(&'a T)>` found unit type `()` help: consider returning the local binding `rc` | LL ~ let rc = Rc::new(function); LL + rc | error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.