F: Fn(A, B, C) -> R desugars to F: Fn<(A, B, C), Output = R> currently.
F: Fn(A, B, C) -> _ could easily desugar to F: Fn<(A, B, C)>.
More generally, we can allow T: Trait<AssocTy = _>, meaning the same as T: Trait.
This form would make it easier to be generic over the return type without having to specify it as another generic parameter (which is worse in type definitions than impls, as it leaks to users).
cc @eternaleye (who suggested it) @nikomatsakis @withoutboats @Centril
F: Fn(A, B, C) -> Rdesugars toF: Fn<(A, B, C), Output = R>currently.F: Fn(A, B, C) -> _could easily desugar toF: Fn<(A, B, C)>.More generally, we can allow
T: Trait<AssocTy = _>, meaning the same asT: Trait.This form would make it easier to be generic over the return type without having to specify it as another generic parameter (which is worse in type definitions than
impls, as it leaks to users).cc @eternaleye (who suggested it) @nikomatsakis @withoutboats @Centril