どうも、ちょげ(@chogetarou)です。
Vec(ベクタ)を範囲で初期化する方法を紹介します。
方法

Vec(ベクタ)を範囲で初期化するには、collect()を使います。
まず、特定の範囲を用意し、範囲からcollect()を呼び出します。
そして、取得するVecの型を変数もしくは「::<T>」で指定します。
//変数でVecの型を指定する
//start=範囲の最初の位置, end=範囲の最後の位置, T=Vecの型
let vect: Vec<T> = (start..end).collect();
//::<T>でVecの型を指定する
let vect = (start..end).collect::<Vec<T>>()
上記のcollect()は、呼び出した範囲で初期化したVec(ベクタ)を取得します。
使用例
fn main(){
let nums: Vec<u8> = (1..5).collect();
let nums2: Vec<u8> = (12..19).collect();
let nums3 = (1..19).collect::<Vec<u8>>();
println!("{:?}", nums);
println!("{:?}", nums2);
println!("{:?}", nums3);
}
出力:
[1, 2, 3, 4]
[12, 13, 14, 15, 16, 17, 18]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]
コメント