t_wの輪郭

Rustベクタ借用可変長コレクション変数宣言不変変数
mapの試しinto_iterの試しfilterの試しiterRustでコマンドライン引数を受け取るVec<u8>StringはVec<u8>のラッパEnumを使うとベクタに複数の型を保持できるベクタの値を走査するベクタのgetと[]の要素取得の違いベクタの要素を不変変数に借用した場合は、そのベクタの要素を変更・追加できなくなるベクタの変更ベクタの解放ベクタの作成ベクタ型mut配列型

mapの試し

2022/2/26 7:23:00
let v1 = vec![1, 2, 3];
let v2:Vec<u32> = v1.iter().map(|x|{x + 1}).collect();
assert_eq!(v1, vec![1, 2, 3]);
assert_eq!(v2, vec![2, 3, 4]);
let v1:Vec<String> = vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")];
let v2:Vec<String> = v1.iter().map(|x|{format!("{}{}", x, x)}).collect();
assert_eq!(v1, vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")]);
assert_eq!(v2, vec![String::from("HogeHoge"), String::from("FugaFuga"), String::from("FooFoo")]);

into_iterの試し

2022/2/26 7:20:00
let v1:Vec<String> = vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")];

//所有権の移動が発生し、v1が使えなくなる
let v2:Vec<String> = v1.into_iter().filter(|x|{x.len() == 3}).collect();

assert_eq!(v1, vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")]);
assert_eq!(v2, vec![String::from("Foo")]);

filterの試し

2022/2/26 7:17:00
let v1:Vec<String> = vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")];
let v2:Vec<&String> = v1.iter().filter(|x|{x.len() == 3}).collect();
assert_eq!(v1, vec![String::from("Hoge"), String::from("Fuga"), String::from("Foo")]);
assert_eq!(v2, vec![&String::from("Foo")]);