What is the rationale to allow this code?
let a = String::from("a"); let b = a + "c"
While changing parameters is now allowed
let c = "c" + a
a is moved and not copied in the first sample while it could do the same in second.
And adding two Strings neither works without borrowing and making copy instead of moving temporary:
let d = String::from("x") + String::from("d");
This is not compiling.
let e = String::from("x") + &String::from("e");
This works but copies while it could move both temporaries.