Slice切片是指向内存块的指针,slice可用于访问存储在连续内存块中的数据部分,它可以与数组,向量和字符串之类的数据结构一起使用。
let sliced_value=&data_structure[start_index..end_index]
最小索引值为0,最大索引值为数据结构的大小,注意end_index将不包含在最终字符串中。
链接:https://www.learnfk.comhttps://www.learnfk.com/rust/rust-slices.html
来源:LearnFk无涯教程网
以下代码从字符串中提取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
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]
&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]
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)