### 配列
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, …]
値を取り出す: [番号], .get(番号), .get(番号).unwrap()
値を追加: .push(値)
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を使う
.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();
値を追加: .insert(名前, 値);
値を削除: .remove(名前);
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でテキストを指定
.get(名前).unwrap();
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);
}