當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust slice用法及代碼示例


本文簡要介紹rust語言中 Primitive Type slice 的用法。

連續序列的動態大小視圖 [T] 。連續在這裏意味著元素的布局使得每個元素與其相鄰元素的距離相同。

另請參閱std::slice 模塊.

切片是表示為指針和長度的內存塊的視圖。

// slicing a Vec
let vec = vec![1, 2, 3];
let int_slice = &vec[..];
// coercing an array to a slice
let str_slice: &[&str] = &["one", "two", "three"];

切片是可變的或共享的。共享切片類型為 &[T] ,而可變切片類型為 &mut [T] ,其中 T 表示元素類型。例如,您可以改變可變切片指向的內存塊:

let mut x = [1, 2, 3];
let x = &mut x[..]; // Take a full slice of `x`.
x[1] = 7;
assert_eq!(x, &[1, 7, 3]);

由於切片存儲它們引用的序列的長度,因此它們的大小是指向 Sized 類型的指針的兩倍。另請參閱 dynamically sized types 上的參考。

let pointer_size = std::mem::size_of::<&u8>();
assert_eq!(2 * pointer_size, std::mem::size_of::<&[u8]>());
assert_eq!(2 * pointer_size, std::mem::size_of::<*const [u8]>());
assert_eq!(2 * pointer_size, std::mem::size_of::<Box<[u8]>>());
assert_eq!(2 * pointer_size, std::mem::size_of::<Rc<[u8]>>());

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 Primitive Type slice。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。