Jestem nowy w Rust i uruchomiony na problem podobny do następujących kilka razy:Jak przenieść własność ciągów?
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);
}
}
co daje następujący błąd:
<anon>:6:22: 6:27 error: `i_str` does not live long enough
<anon>:6 as_str.push(&i_str);
^~~~~
Jak mogę przenieść prawo własności do napisu wektor (nie chcesz kopiować)? Czy potrzebuję życia? Czy powinien to być str lub String (przypuśćmy, że nie chcę mutować samych elementów w wektorze)?
Aby upewnić się, że ciąg jest przenoszony, a nie kopiowany w takim przypadku, jest poprawny? Czy trzeba jednoznacznie skopiować w Rust (w przeciwieństwie do C++)? – gnash
@gnash Tak, zgadza się. – emlai
'let as_str: Vec <_> = (1..6) .map (| i | i.to_string()). Collect()' jest innym sposobem na osiągnięcie tego, co PO jest po. – Akavall