まずは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()) だと上手くいかないので注意が必要。セットが一つでも[]で囲ってあげる必要あり。