Namaran

Code daily. Without assist.

2026-08-22

total_len.rs

fn total_len(names: Vec<String>) -> usize {
    let mut total = 0;
    for name in names {
        total += name.len();
    }
    names.len()
}

これはコンパイルできません。なぜでしょうか?最小限の変更で直してください。

Answer

for name in namesnames(の所有権)をムーブして消費します(Vec<String>Copyではないため)。そのためループの後でnames.len()を呼ぼうとすると、すでにムーブ済みの値を借用しようとしてコンパイルエラーになります。for name in &namesとし、namesへの参照だけを借りるようにしてください。