我在文档中找不到Vec<T>
如何从指定范围中检索切片.
标准库中是否有类似的东西:
let a = vec![1, 2, 3, 4];
let suba = a.subvector(0, 2); // Contains [1, 2];
Run Code Online (Sandbox Code Playgroud)
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[..]);
}
Run Code Online (Sandbox Code Playgroud)
如果您希望将整个部分转换Vec
为切片,则可以使用deref coercion:
fn main() {
let a = vec![1, 2, 3, 4, 5];
let b: &[i32] = &a;
println!("{:?}", b);
}
Run Code Online (Sandbox Code Playgroud)
调用函数时会自动应用此强制:
fn print_it(b: &[i32]) {
println!("{:?}", b);
}
fn main() {
let a = vec![1, 2, 3, 4, 5];
print_it(&a);
}
Run Code Online (Sandbox Code Playgroud)
您也可以致电Vec::as_slice
,但这并不常见:
fn main() {
let a = vec![1, 2, 3, 4, 5];
let b = a.as_slice();
println!("{:?}", b);
}
Run Code Online (Sandbox Code Playgroud)
也可以看看: