Как стать автором
Обновить

Комментарии 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 — это часть типа.

Ну извините, так в оригинале. Я только перевёл :(

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории