Вместо замены строки в Rust? - PullRequest
0 голосов
/ 22 февраля 2020

Книга 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, заполняемого строкой" Среди нас есть растение! " и затем имя для переназначения (в качестве указателя). Вместо этого синтаксис выглядит так, как будто строка заменена «на месте». Что Руст делает под капотом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...