まずはhashmapから
use std::collections::HashMap;
fn main(){
let mut map = HashMap::new();
map.insert("x", 10);
map.insert("y", 20);
map.insert("z", 30);
for (k, v) in &map {
println!("{} {}", k, v);
}
}
これを構造体で使いたい
#[derive(Debug)]
struct Name {
name: HashMap<String, String>,
age: u32,
}
fn main(){
let mut n = Name { name: HashMap::new(), age: 20 };
n.name.insert("Yamada".to_string(), "Taro".to_string());
println!("{:?}", n);
}
上記でもできるのはできるけど、一発で書きたい
fromを使えば以下で行ける。
#[derive(Debug)]
struct Name {
name: HashMap<String, String>,
age: u32,
}
fn main(){
let mut n = Name { name: HashMap::from([("yamada".to_string(), "taro".to_string())]), age: 20 };
println!("{:?}", n);
}
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.39s
Running `target/debug/sample`
Name { name: {“yamada”: “taro”}, age: 20 }
HashMap::from(“yamada”.to_string(), “taro”.to_string()) だと上手くいかないので注意が必要。セットが一つでも[]で囲ってあげる必要あり。