### 配列
fn main() { let data = [12, 34, 56, 78, 90]; let mut ans = 0; for item in data { ans += item; } println!("データの合計は、{}です。", ans); }
配列の型は[型;個数]となる。
### タプル
fn main() { let taro = ("Taro", 39, true); let hanako = ("Hanako", 28, false); println!("{:?}", taro); println!("{:?}", hanako); println!("name:{}, {}", taro.0, hanako.0); println!("age:{}, {}", taro.1, hanako.1); println!("male?:{}, {}", taro.2, hanako.2); }
### ベクター型
同じ型の値を多数保管
空のVecを作成: Vec::new()
初期値を持つvecを作成: vec![値1, 値2, …]
値を取り出す:
値を追加:
fn main(){ let mut data = Vec::new(); data.push(123); data.push(456); data.push(789); println!("0:{}, 1:{}, 2:{}", data[0], data[1], data.get(2).unwrap()); }
### Vecの値を繰り返し処理する
ベクターはコレクションである
fn main(){ let data = vec![123, 456, 789]; let mut result = 0; for item in data { result += item; } println!("データの合計は、{}です。", result); }
途中に値を挿入したい場合はinsertを使う
fn main(){ let mut data = vec![123, 456, 789]; data.remove(1); data.insert(2, 100); println!("{:?}", data); }
### 名前で値を管理するHashMap
std::collectionsというモジュールで管理されている
use std::collections::HashMMap;
HashMapの作成:HashMap::new();
値を追加:
値を削除:
use std::collections::HashMap; fn main(){ let mut map = HashMap::new(); map.insert(String::from("first"), 123); map.insert(String::from("second"), 456); map.insert(String::from("third"), 789); map.remove("second"); println!("{:?}", map); }
HashMapは順不同、テキストリテラルではなくStringでテキストを指定
use std::collections::HashMap; fn main(){ let mut map = HashMap::new(); map.insert(String::from("first"), 123); map.insert(String::from("second"), map["first"] * 2); map.insert(String::from("third"), map.get("first").unwrap() + map.get("second").unwrap()); println!("{:?}", map); }
HashMapの繰り返し処理
L for(ky, val) in map
use std::collections::HashMap; fn main(){ let mut map = HashMap::new(); map.insert(String::from("first"), 123); map.insert(String::from("second"), 456); map.insert(String::from("third"), 789); let mut result = 0; for (ky, val) in map { println!("{}: {}.", ky, val); result += val; } println!("total: {}.", result); }
### String型のテキスト
fn main() { let s1 = String::new(); let s2 = String::from("Hello"); let s3 = "World"; let s4 = s1 + &s2 + &s3; println!("{}", s4); }
fn main() { let mut s1 = String::new(); s1.push_str("Hello"); s1.push_str("World!"); println!("{}", s1); }
fn main() { let mut s1 = String::from("Hello,World!"); s1.insert_str(6, " Rust "); s1.insert(7, '*'); s1.insert(12, '*'); s1.remove(5); println!("{}", s1); }
### 文字の部分取得
レンジを使って文字列の中から一部分だけ取り出せる
fn main() { let s1 = String::from("Hello,Rust World!"); let s2 = &s1[0..5]; let s3 = &s1[6..10]; let s4 = &s1[11..16]; let s5 = String::new() + s4 + s3 + s2; println!("{}", s5); }