Vector 如何获取Vec的切片<;T>;锈迹斑斑?

Vector 如何获取Vec的切片<;T>;锈迹斑斑?,vector,rust,Vector,Rust,我在Vec的文档中找不到如何从指定范围检索切片 标准库中是否有类似的内容: let a = vec![1, 2, 3, 4]; let suba = a.subvector(0, 2); // Contains [1, 2]; Vec的文档介绍了这一点 您可以通过使用(或、、或),(或)索引或来创建或的: 如果您希望将整个Vec转换为切片,可以使用: 调用函数时会自动应用此强制: fn print_it(b: &[i32]) { println!("{:?}", b); }

我在
Vec
的文档中找不到如何从指定范围检索切片

标准库中是否有类似的内容:

let a = vec![1, 2, 3, 4];
let suba = a.subvector(0, 2); // Contains [1, 2];

Vec
的文档介绍了这一点

您可以通过使用(或、、或),(或)索引或来创建或的:


如果您希望将整个
Vec
转换为切片,可以使用:

调用函数时会自动应用此强制:

fn print_it(b: &[i32]) {
    println!("{:?}", b);
}

fn main() {
    let a = vec![1, 2, 3, 4, 5];
    print_it(&a);
}
你也可以打电话,但不太常见:

fn main() {
    let a = vec![1, 2, 3, 4, 5];
    let b = a.as_slice();
    println!("{:?}", b);
}
另见:


没有显式结束索引的范围的行为是什么?这是否意味着范围到向量的末尾(例如向量长度)?我找不到有记录的。是的,没错。它在
SliceIndex
impls的文档中有明确的文档记录,例如:“从字节范围
[begin,len)
返回给定字符串的一个片段。相当于
&self[begin..len]
&mut self[begin..len]
+1我喜欢
.as_slice()
[…]
因为它传达了意图。(将Vec转换为切片,因为只有切片而不是Vec实现
io::Read
fn print_it(b: &[i32]) {
    println!("{:?}", b);
}

fn main() {
    let a = vec![1, 2, 3, 4, 5];
    print_it(&a);
}
fn main() {
    let a = vec![1, 2, 3, 4, 5];
    let b = a.as_slice();
    println!("{:?}", b);
}