News for hackers. Stuff that matters.
Re:Rust 1.17 by pc2g4d on Thursday April 27, 2017 @02:12PM (#14213584)
You could maybe introduce a lint saying "possibly unnecessary allocation" when people `+` `&str`s together. Then beginners can still use the syntax that they're familiar with (and that basically every other language uses) but there's still notification somewhere that they can likely structure their code to be more efficient.
Re:Rust 1.17 by Lev1a on Thursday April 27, 2017 @02:17PM (#14213622)
If I understand the ownership rules correctly, it would actually violate those rules to have the "familiar syntax". Also it seems to be Rust's thing to make things explicit, e.g. `.clone()`, not having `++`-style operators etc.
Re:Rust 1.17 by steveklabnik on Thursday April 27, 2017 @02:18PM (#14213634)
In this case, due to the rules, it would be possible; the call to clone would be inside the method call, so you wouldn't see it. (With other signatures it may not, but Add returns a value, not a reference.)

In other words, it would violate the conventions, but not the rules.

(Okay so there's a _really_ obscure rule here that sill prevents this but it only matters because it's the standard library. It's not actually the signature)

Re:Rust 1.17 by eximius on Thursday April 27, 2017 @02:20PM (#14213646)
I would definitely side with it being okay. I like how string are modeled, but it doesn't mean it isn't painful sometimes. Making some common string operations like &str + &str defined but linted is a good balance of ergonomics and efficiency (that'd be a rare bottleneck, but the lint would make it visible).