Rust 探索(六)—— 所有权(三)
Rust 探索(六)—— 所有权(三)
¶1. 切片
除引用外,还有另外一种不持有所有权的数据类型——切片
切片允许我们引用集合中某一段连续的元素序列
¶2. 字符串切片
字符串切片是指向String对象中某个连续部分的引用
1 | let s = String::from("hello world"); |
切片的写法类似于引用,不过不是整体,而是一段连续区域,对应元素索引的左闭右开区间
1 | let s = String::from("hello world"); |
字符串切片类型表示为&str
1 | fn main() { |
¶2.1. &str
类型
字符串切片使得代码编写更加安全
编译器会确保指向String的引用持续有效
在默认的情况下,切片也是不可变引用,因此这就会带来约束,可变与不可变的互斥,将其作为不可变时,任何修改内容的操作,如:clear()
,都能在编译时被及时发现
¶2.2. 字面量就是切片
前面可以看到,我们使用字符串字面量时都是使用String::from()
声明,那么其本身是什么类型呢?
1 | let s = "hello world"; |
实际上是&str
,也就是字符串切片类型,并且这是一个不可变引用
在定义函数的时候使用字符串切片代替字符串引用会使API更加通用,并且不会损失任何功能
1 | fn main() { |
¶3. 其他类型的切片
切片并非字符串专属,其他类型也可以使用切片特性
1 | let a = [1, 2, 3, 4, 5]; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 樱花盛开的海港!