我在文档中找不到Vec<T>如何从指定范围中检索切片.
标准库中是否有类似的东西:
let a = vec![1, 2, 3, 4];
let suba = a.subvector(0, 2); // Contains [1, 2];
Bri*_*ell 55
文档Vec在标题为"切片"的部分中介绍了这一点.
您可以创建slice一个的Vec或array通过与索引它Range(或RangeInclusive,RangeFrom,RangeTo),例如:
fn main() {
    let a = vec![1, 2, 3, 4, 5];
    // With a start and an end
    println!("{:?}", &a[1..4]);
    // With a start and an end, inclusive
    println!("{:?}", &a[1..=3]);
    // With just a start
    println!("{:?}", &a[2..]);
    // With just an end
    println!("{:?}", &a[..3]);
    // With just an end, inclusive
    println!("{:?}", &a[..=2]);
    // All elements
    println!("{:?}", &a[..]);
}
如果您希望将整个部分转换Vec为切片,则可以使用deref coercion:
fn main() {
    let a = vec![1, 2, 3, 4, 5];
    let b: &[i32] = &a;
    println!("{:?}", b);
}
调用函数时会自动应用此强制:
fn print_it(b: &[i32]) {
    println!("{:?}", b);
}
fn main() {
    let a = vec![1, 2, 3, 4, 5];
    print_it(&a);
}
您也可以致电Vec::as_slice,但这并不常见:
fn main() {
    let a = vec![1, 2, 3, 4, 5];
    let b = a.as_slice();
    println!("{:?}", b);
}
也可以看看:
| 归档时间: | 
 | 
| 查看次数: | 21864 次 | 
| 最近记录: |