Я новичок в Русте и столкнулись с проблемой, аналогичной следующие несколько раз:Как передать права собственности на строки?
fn main() {
let mut as_str: Vec<&String> = Vec::new();
for i in [1, 2, 3, 4, 5].iter() {
let i_str = i.to_string();
as_str.push(&i_str);
}
}
Который дает следующее сообщение об ошибке:
<anon>:6:22: 6:27 error: `i_str` does not live long enough
<anon>:6 as_str.push(&i_str);
^~~~~
Как передать право собственности на строку в вектор (не хотите копировать)? Нужна ли мне жизнь? Должна ли она быть str или String (предположим, что я не хочу мутировать сами элементы в векторе)?
Просто убедитесь, что строка перемещена и не скопирована в этом случае правильно? Нужно ли явно копировать в Rust (в отличие от C++)? – gnash
@gnash Да, это так. – emlai
'let as_str: Vec <_> = (1..6) .map (| i | i.to_string()). Collect()' - это еще один способ добиться того, что происходит после OP. – Akavall