IMHO Rust may have tried to roll a little too much into the language. It has the air of the second system effect to it, where every good idea from every language is added together to get something that is less than the sum of its parts and you get code that is hard to decipher until you've learned a full college course worth of syntax.
Can you name a specific feature you want removed from Rust?
An example:
fn largest<T>(list: &[T]) -> T {
let mut largest = list[0];
for &item in list.iter() {
if item > largest {
largest = item;
}
}
I'm sure experienced Rust devs look at that and say it's fine, but that's definitely a hurdle for new developers. fn largest<T: PartialOrd + Copy>(list: &[T]) -> T {
https://tomtongue.com/docs/rust-wk-20.html#trait-boundsThe Swift team probably also agonized over syntax decisions and they came up with something very different which has won over many people and attracted little criticism.
Swift also doesn't have pervasive use of lifetimes like Rust does. Lifetimes, by their nature, always add some level of "noise".
At the end of the day though, these tiny thing like fn, or the lifetime annotations and the many others add up to an unpleasant experience and less readable code.
If it becomes a mainstream language (like Java, C++, etc), I'd be happy to concede I was wrong. It could be that memory safety will trump ergonomics and it wouldn't be the first time that somewhat painful to use tools become very popular - see Linux, git, etc.
"For new features, people insist on LOUD explicit syntax. For established features, people want terse notation."
fn is fine.
This is not true. We agonized over syntax decisions. "fn" was actually preferred by most of the Rust community.