How do I get a slice of a Vec<T> in Rust?
在
标准库中是否有类似的内容:
1 2 | let a = vec![1, 2, 3, 4]; let suba = a.subvector(0, 2); // Contains [1, 2]; |
您可以通过用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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[..]); } |
如果您希望将整个
1 2 3 4 5 6 | fn main() { let a = vec![1, 2, 3, 4, 5]; let b: &[i32] = &a; println!("{:?}", b); } |
在调用函数时自动施加强制:
1 2 3 4 5 6 7 8 | fn print_it(b: &[i32]) { println!("{:?}", b); } fn main() { let a = vec![1, 2, 3, 4, 5]; print_it(&a); } |
您也可以调用
1 2 3 4 5 | fn main() { let a = vec![1, 2, 3, 4, 5]; let b = a.as_slice(); println!("{:?}", b); } |
另请参见:
-
为什么不鼓励接受对String的引用(