无涯教程-Rust - 切片(Slices)

88 阅读1分钟

Slice切片是指向内存块的指针,slice可用于访问存储在连续内存块中的数据部分,它可以与数组,向量和字符串之类的数据结构一起使用。

Slices - 语法

let sliced_value=&data_structure[start_index..end_index]

最小索引值为0,最大索引值为数据结构的大小,注意end_index将不包含在最终字符串中。

以下代码从字符串中提取5个字符(从索引4开始)。

fn main() {
   let n1="Learnfk".to_string();
   println!("length of string is {}",n1.len());
   let c1=&n1[4..9]; 

//获取 4、5、6、7 和 8 个索引处的字符 println!("{}",c1); }

7

Slices - 整数数组

main()函数声明一个包含5个元素的数组,它调用 use_slice()函数,并将三个元素的slice(指向数据数组)传递给它,slice通过引用传递,use_slice()函数输出slice的值及其长度。

fn main(){
   let data=[10,20,30,40,50];
   use_slice(&data[1..4]);
}
fn use_slice(slice:&[i32]) { 
   //正在获取切片或借用 i32 数组的一部分
   println!("length of slice is {:?}",slice.len());
   println!("{:?}",slice);
}
length of slice is 3
[20, 30, 40]

Slices - 可变切片

&mut关键字可用于将切片标签为可变的。

fn main(){
   let mut data=[10,20,30,40,50];
   use_slice(&mut data[1..4]);
   //传递引用
20, 30 and 40 println!("{:?}",data); } fn use_slice(slice:&mut [i32]) { println!("length of slice is {:?}",slice.len()); println!("{:?}",slice); slice[0]=1010; //用 1010 替换 20 }
length of slice is 3
[20, 30, 40]
[10, 1010, 30, 40, 50]

参考链接

www.learnfk.com/rust/rust-s…