Нужно дописать субтрейт так, что бы функция тайпчекалась успешно.
trait HasFoo {
type Foo;
}
/// Modify only this trait definition.
trait HasDefaultFoo: HasFoo {}
/// Make this function typecheck successfully
fn make_this_typecheck<F>() -> F::Foo
where
F: HasDefaultFoo,
{
Default::default()
}
Для удобства линк с задачей на плейграунде.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=487462038096be1e341e48d0f6fd94b7