Tôi mới vào Rust và đã chạy vào một vấn đề tương tự với một vài lần sau:Làm cách nào để chuyển quyền sở hữu chuỗi?
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);
}
}
nào mang lại các lỗi sau:
<anon>:6:22: 6:27 error: `i_str` does not live long enough
<anon>:6 as_str.push(&i_str);
^~~~~
Làm thế nào để chuyển quyền sở hữu của chuỗi vectơ (không muốn sao chép)? Tôi có cần cả đời không? Nó có nên là một str hoặc một String (giả sử tôi không muốn tự biến đổi các mục trong vector)?
Để đảm bảo, Chuỗi được di chuyển và không được sao chép trong trường hợp đó đúng? Người ta có phải sao chép rõ ràng trong Rust (không giống như C++)? – gnash
@gnash Vâng, đúng vậy. – emlai
'let as_str: Vec <_> = (1..6) .map (| i | i.to_string()). Collect()' là một cách khác để đạt được những gì OP là sau. – Akavall