이번 편의 목표: 책 종류별 하루 요율을 이름으로 저장하고 꺼냅니다.

HashMap은 키와 값의 쌍입니다. 표준 라이브러리의 std::collections에 있습니다. insert로 넣고 get으로 찾습니다. get은 없을 수 있으므로 Option을 돌려줍니다. 없는 키를 0원으로 보려면 unwrap_or를 씁니다.

Rust
use std::collections::HashMap;

fn main() {
    let mut fees = HashMap::new();
    fees.insert(String::from("종이책"), 100);
    fees.insert(String::from("전자책"), 50);
    let paper = fees.get("종이책").copied().unwrap_or(0);
    println!("{}", paper * 3);
}

출력은 300입니다. 키는 String이고, get에는 &str을 넘길 수 있습니다. copied는 참조 안의 i32를 복사해 Option<i32>로 만듭니다. 같은 키로 다시 insert하면 이전 값이 교체됩니다.

키의 순서는 넣은 순서가 아닙니다. 목록의 순서가 중요하면 10편의 Vec을 쓰고, 이름으로 찾을 때만 HashMap을 씁니다.

직접 해 보기

전자책을 꺼내 2일을 곱하세요. 출력은 100이어야 합니다.

해설

전자책의 하루 요율은 50입니다. 2일이면 100입니다. get에 넘기는 문자열은 전자책입니다.