String::from(", world!");
let str3 = str1 + &str2
При том что метод add() у трейта Add<&str> реализован так (сурс).
#[inline]
fn add(mut self, other: &str) -> String {
self.push_str(other);
self
}
Первый аргумент является мутабельная строка с типом String (и понятно почему, чтобы изменить строку), но в примере он не мутабелен, но при этом все работает.
И что самое странное, что в документации сигнатура у этого метода такая
fn add(self, other: &str) -> String
Насчет документации, может ошиблись?
Он принимает левую сторону по значению и возвращает обратно
потому что mut в mut binding_name это не часть типа
Обсуждают сегодня