pub trait TestTrait { type MyType; fn func() -> Option where Self: Sized; } impl dyn TestTrait where Self: Sized, // pesky sized predicate { fn other_func() -> dyn TestTrait { match Self::func() { None => None, //~^ ERROR mismatched types } } } fn main() {}