But you’re also missing one use of the impl keyword: fn func() -> impl Trait.
[…] So dropping the
implin [return position] might not be completely impossible like the other uses ofimpl.
But the impl markes that it is a trait to the programmers.
Take the following functions:
func1()->A{...}
func2()->A{...}
Does the following snippet compile?
let mut thing = func1();
thing = func2();
Under the current rules we know it will. But if A could be a trait, the functions could return different types. We currently mark that with the impl.
Why? What value does -> () provide? Why not elide that?
What value is provided by keeping it?
What value does cluttering up your code with -> () provide?
Why a syntactic special-case for exactly that type and not any other random type?
Because the unit type is special, just like the never ! type. () also has the special importance of being the return value of an empty statement and some other stuff.
languages w/o [semicolons] feel awkward since you’re generally limited to one statement per line
Then fixing that might make sense. :-)
It’s fixed with semicolons ;-)




Leap seconds are already a problem for minutes and hours, which is probably why they weren’t added until now.