Ау, растаманы! Почему нельзя вместо
fn f(x: &impl Trait1) -> impl Trait2
писать
fn f(x: &Trait1) -> Trait2
? Trait – не first class тип? Это бред, но даже если так: и что? Или может возможен конфликт одинаковых имён структуры и trait? Короче, смахивает на синтаксический оверхед.
UPD. Ну и вдогонку, чтобы дважды не вставать: «we can’t implement external traits on external types» – это не просто дичь, а просто дичь. Ну и аргументация трындец: «Without the rule, two crates could implement the same trait for the same type, and Rust wouldn’t know which implementation to use.». Вот когда конфликт возникнет, тогда и ругались бы на него.
UPD2. fn vs fun – зачем отдельный keyword для лямбд?