Vec<T>
のドキュメント内で、指定された範囲からスライスを取得する方法が見つかりません。
標準ライブラリには次のようなものがあります:
let a = vec![1, 2, 3, 4];
let suba = a.subvector(0, 2); // Contains [1, 2];
Vec
のドキュメントは、これを 「スライス」というタイトルのセクション でカバーしています。
slice
の Vec
または array
を作成するには、 a Range
(または RangeFrom
、 RangeTo
、 RangeFull
)、 たとえば :
fn main() {
let a = vec![1, 2, 3, 4, 5];
// With a start and an end
println!("{:?}", &a[1..4]);
// With just a start
println!("{:?}", &a[2..]);
// With just an end
println!("{:?}", &a[..3]);
// 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);
}
こちらもご覧ください: