tôi chạy vào một lỗi:"giá trị vay không sống đủ lâu" khi sử dụng as_slice()
extern crate serialize;
use serialize::base64::{mod, ToBase64, FromBase64};
fn main() {
let a: [u8, ..30] = [123, 34, .....];
let b = a.from_base64().as_slice();
println!("{}", b);
}
Lỗi:
error: borrowed value does not live long enough
let b = a.from_base64().as_slice();
Đối với tôi, các mã có thể làm không sai, Tuy nhiên. Tại sao tôi gặp lỗi đó?
Lưu ý rằng 'let a: [u8, ..30] = [123, 34, ...];' có thể phù hợp khi bạn phải điều chỉnh độ dài bất cứ khi nào bạn thay đổi mảng. Nếu bạn muốn ghi lại chiều dài, điều này là tốt, nếu bạn không cần nó và cảm thấy đau đớn, mặc dù có một cách khác để diễn tả điều này: 'let a = [123u8, 34, ...];'. Điều quan trọng là '123' và' 34' chỉ là tích phân chung (không có loại cụ thể), vì vậy bạn đang hạn chế chúng bằng cách chỉ định 'u8'; tuy nhiên, vì mảng là các thùng chứa đồng nhất, nên một giải pháp khác là hạn chế loại một (đầu tiên, thông thường, vì vậy '123u8') và trình biên dịch suy luận rằng tất cả đều là' u8'! –