Комментарии 4
Спасибо большое за качественный перевод!
Один из первых примеров не работает:
видимо, должно быть
Не возможно получить мутабельную ссылку на немутабельный объект (и дальше это тоже упоминается).
Один из первых примеров не работает:
fn main() {
let alice = Person { name: String::from("Alice"), age: 30 };
baz(&alice); // работает
bin(&alice); // ошибка!
bin(&mut alice); // а это работает
}
видимо, должно быть
let mut alice = Person { name: String::from("Alice"), age: 30 };
Не возможно получить мутабельную ссылку на немутабельный объект (и дальше это тоже упоминается).
Объяснение в статье только больше запутывает. Ставните:
fn foo(mut person: Person) { unimplemented!() }
fn bar(person: Person) { unimplemented!() }
и
fn baz(person: &Person) { unimplemented!() }
fn bin(person: &mut Person) { unimplemented!() }
Очевидно же, что в первом случае mut
относится к имени аргумента, которое привязывается к значению уже внутри функции, а во втором случае mut
— это часть типа.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Rust crashcourse. Правило трёх — параметры, итераторы и замыкания