// Based on https://github.com/rust-lang/rust/blob/689511047a75a30825e367d4fd45c74604d0b15e/tests/ui/issues/issue-59326.rs#L1 // check-pass trait Service { type S; } trait Framing { type F; } impl Framing for () { type F = (); } trait HttpService<F: Framing>: Service<S = F::F> {} type BoxService = Box<dyn HttpService<(), S = ()>>; fn build_server<F: FnOnce() -> BoxService>(_: F) {} fn make_server<F: Framing>() -> Box<dyn HttpService<F, S = F::F>> { unimplemented!() } fn main() { build_server(|| make_server()) }