2013-05-26 38 views
10

Điều gì sẽ là cách thành ngữ chuyển đổi mảng hoặc vectơ của một kiểu này sang kiểu khác trong Rust? Hiệu ứng mong muốn làMảng/vectơ đúc/đúc trong Rust

let x = ~[0 as int, 1 as int, 2 as int]; 
let y = vec::map(x, |&e| { e as uint }); 

nhưng tôi không chắc liệu điều tương tự có thể đạt được theo kiểu ngắn gọn hơn hay không, tương tự như loại hình vô hướng.

Tôi dường như không tìm được manh mối trong hướng dẫn hoặc tham chiếu của Rust. TIA.

Trả lời

7

Nói chung, tốt nhất bạn sẽ nhận được cũng tương tự như những gì bạn có (điều này phân bổ một vector mới):

let x = ~[0i, 1, 2]; 
let y = do x.map |&e| { e as uint }; 
// equivalently, 
let y = x.map(|&e| e as uint); 

Mặc dù, nếu bạn biết các mẫu bit trong những điều bạn đang đúc giữa là giống nhau (ví dụ: newtype struct theo kiểu nó kết thúc tốt đẹp hoặc đúc giữa uintint), bạn có thể thực hiện một diễn viên tại chỗ, sẽ không phân bổ một vectơ mới (mặc dù nó có nghĩa là không thể truy cập x cũ):

let x = ~[0i, 1, 2]; 
let y: ~[uint] = unsafe { cast::transmute(x) }; 

(Lưu ý rằng đây là unsafe và có thể gây ra những điều xấu xảy ra.)

+0

Cảm ơn bạn. Đi theo cách chức năng thông thường và sử dụng 'map' sẽ đủ tốt. –

Các vấn đề liên quan