特定のデータ型を挿入可能な可変長のリスト。
let vector: Vec<i32> = Vec::new();let mut vector = vec![1, 2, 3]; // マクロを利用した初期化// 更新する際にはpushメソッドを使用するvector.push(4);vector.push(5);vector.push(6);// forによる値の捜査vector.push(7);for i in &vector { println!("{:?}", i);}// enumを使用し、異なる型を挿入することも可能#[derive(Debug)]enum Type { A, B};let v = vec![Type::A, Type::B];for i in &v { println!("{:?}", i);}プログラムへ直書きされる文字列リテラルと異なり、ヒープに格納される標準ライブラリ提供のコレクション。
// Vec同様::new()で新規生成可能let mut s = String::new();// 文字列リテラルからto_string()メソッドを使用することでも新規生成できるlet s = "Hello String.".to_string();// String::from()関数を使用する事でも文字列リテラルから生成出来るlet s = String::from("Hello String.");// UTF-8エンコードされているので日本語も使用できるlet s = String::from("こんにちは");// push_strメソッドで文字列を追加するlet mut s = String::from("hoge");s.push_str("fuga");// pushメソッドを使用すると1文字のみ追加できるlet mut s = String::from("ww");s.push('w');// + 演算子で文字列を連結できるlet s1 = String::from("Hello ");let s2 = String::from("world!");let s3 = s1 + &s2; // 連結する側は参照 s1の所有権は消える// 複雑な文字列連結はformat!マクロを使用するlet s1 = String::from("one");let s2 = String::from("two");let s3 = String::from("three");let s = format!("{}-{}-{}", s1, s2, s3);// Rustには文字列への添え字は使用できないlet s1 = String::from("hello");// let h = s1[0]; // 使用できない// 文字列から特定のあ値を取り出す場合、スライスを使用するlet h = &s1[0..1];// chars()メソッドから文字毎の配列を取得できるfor c in s1.chars() { println!("{}", c);}