根据rust doc,字符串切片是:
这个字符串是静态分配的,这意味着它保存在我们编译的程序中,并且在它运行的整个持续时间内都存在.
矢量切片怎么样?这些字节码是硬编码的值吗?
Rust doc没有正确解释什么是矢量切片:
与&str类似,切片是对另一个数组的引用.我们可以使用as_slice()方法从向量中获取切片:
let vec = vec![1i, 2i, 3i];
let slice = vec.as_slice();
实际上......它并不总是静态分配.请注意具体措辞:
let string = "Hello there.";
这个字符串是静态分配的,这意味着它保存在我们编译的程序中,并且在它运行的整个持续时间内存在(empahsis mine).
在字符串文字的情况下,字符串是静态分配的,字符串切片引用它.但是,还有其他字符串切片的情况,它们引用动态分配的字符串.
通常,切片是数组中连续的元素序列(阵列所在的任何地方).因此,在Rust:
T类型为Ts 的数组中的元素(类型)的切片如果数组具有静态生命周期(即,在程序的整个持续时间内存在),则使用static关键字表示:
&'static str是一个&str具有这种生命周期的(字符串切片),因此它是Rust中字符串文字的精确类型.
否则,生命周期通常与数组所有者的生命周期有关,例如:
let vec = vec!(1i, 2, 3);   // create a dynamically allocated array of 3 `int`
let slice = vec.as_slice(); // create a slice into this array,
                            // the lifetime of which cannot (obviously)
                            // exceed that of the array.
因此,如果vec有一个生命周期'a,那么slice类型&'a [int]可以在类型签名中看到:
fn as_slice(&'a self) -> &'a [T]
(来自std::vec::Vec页面)
| 归档时间: | 
 | 
| 查看次数: | 4761 次 | 
| 最近记录: |