Exposing String repr such that the capacity hack for literals won’t work
PartialOrd
Centril’s added opinion(implying agreement with the above set ^^):
struct and enum should have just been data, i.e: one keyword
type variables should have started with lowercase and concrete types with uppercase, and would permit fn id(x: t) -> t — tho this would lead to some possibly problems wrt. extern that you could overcome.
the“head” type parameter of a trait is implicit
Niko’s thoughts for things beyond that set ( not implying agreement with all of them =) ):
permitting“lifetime-sensitive dispatch” on traits
unlike most other things, can’t readily fix with an edition
adding AsRef impls breaks type inference =)
moving methods to inherent impls breaks type inference
edition-sensitive method resolution
&uniq — that prohibits mutation but guarantees uniqueness — might have been useful for things like Pin; I wonder if there is a way to rephrase &mut T in terms of &uniq Mut<T>, where Mut is analogous to Cell but requires an &uniq and not an &T.
Josh’s additions:
fmt::Write and io::Write having the same name.
Simon:
Range types implementing Iterator themselves, rather than just IntoIterator.
Yehuda’s additions:
mod syntax
such fine-grained privacy by default(vs. a more crate-centric default)
String literals are not String
No cross-crate coherence solution(some way to scope coherence to a bigger unit than“crate” that you still own)
Controversial: impl<T> Foo<T> {}
I think in-band declaration should be allowed, just as it’s now allowed for lifetimes
Aaron’s List