当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。