Книга Rust by Example предлагает этот интересный пример iter_mut
, вызванного для вектора.
fn main() {
let mut names = vec!["Bob", "Frank", "Ferris"];
for name in names.iter_mut() {
*name = match name {
&mut "Ferris" => "There is a rustacean among us!",
_ => "Hello",
}
}
println!("names: {:?}", names);
}
Я был удивлен синтаксисом внутри цикла:
- кажется, что имя разыменовывается с помощью
*name
- , тогда переменная разыменовывается заново
Я ожидал в "простом" C означает "новый указатель на новую строку другого размера в отношении Ferris
, заполняемого строкой" Среди нас есть растение! " и затем имя для переназначения (в качестве указателя). Вместо этого синтаксис выглядит так, как будто строка заменена «на месте». Что Руст делает под капотом?