use std::collections::HashMap;
fn main() {
{
let v: Vec<i32> = Vec::new();
println!("1 : {:?}", v);
let mut v = Vec::new();
v.push(1);
v.push(2);
v.push(3);
println!("2.1 : {:?}", v);
v.pop();
println!("2.2 : {:?}", v);
let v = vec![1, 2, 3];
println!("3.1 : {}, {:?}, {:?}", v[1], v.get(1), v.get(100));
for i in &v {
println!("3.2 : {}", i);
}
let mut v = vec![1, 2, 3];
for i in &mut v {
*i += 1;
}
for i in &v {
println!("4 : {}", i);
}
#[derive(Debug)]
enum Test {
A(i32),
B(String),
}
let mut v = Vec::new();
v.push(Test::A(1));
v.push(Test::B(String::from("a")));
println!("5 : {:?}", v);
}
{
let s = String::from("a");
println!("6 : {}", s);
let s = "a".to_string();
println!("7 : {}", s);
let s = 1.to_string();
println!("8 : {}", s);
let mut s = String::from("a");
s.push('b');
println!("9 : {}", s);
let mut s = String::from("a");
s.push_str(", b");
println!("10 : {}", s);
let mut s1 = String::from("a");
let s2 = String::from("b");
println!("11.1 : {}", format!("{}-{}", s1, s2));
println!("11.2 : {}, {}", s1, s2);
println!("11.3 : {}", s1.clone() + &s2);
s1.push_str(&s2);
println!("11.4 : {}, {}", s1, s2);
let s = String::from("abc");
println!("12 : {}", s.len());
let s = String::from("abc");
for byte in s.bytes() {
println!("13.1 : {}", byte);
}
for c in s.chars() {
println!("13.2 : {}", c);
}
}
{
let mut m = HashMap::new();
m.insert(String::from("a"), 1);
m.insert(String::from("b"), 2);
println!("14.1 : {:?}", m);
println!("14.2 : {:?}", m.get(&String::from("a")));
println!("14.3 : {:?}", m.get(&String::from("c")));
let key = vec![String::from("a"), String::from("b")];
let value = vec![1, 2];
let m: HashMap<_, _> = key.iter().zip(value.iter()).collect();
println!("15 : {:?}", m);
let mut m = HashMap::new();
m.insert(String::from("a"), 1);
m.insert(String::from("b"), 2);
for (key, value) in &m {
println!("16 : {}-{}", key, value);
}
let mut m = HashMap::new();
m.insert(String::from("a"), 1);
println!("17.1 : {:?}", m);
m.entry(String::from("a")).or_insert(2);
println!("17.2 : {:?}", m);
m.entry(String::from("b")).or_insert(2);
println!("17.3 : {:?}", m);
let value = m.entry(String::from("a")).or_insert(2);
*value += 1;
println!("17.4 : {:?}", m);
}
}