더북(TheBook)

코드 4-31 저장소에 질문을 추가하는 경로 핸들러 추가하기

...
async fn add_question(
    store: Store,
    question: Question,
) -> Result<impl warp::Reply, warp::Rejection> {
    store.questions.write().await.insert(question.id.clone(), question);
        
    Ok(warp::reply::with_status(
        "Question added", 
        StatusCode::OK,
    ))
}
...

insert 메서드는 해시 맵의 인덱스와 저장하려는 값, 두 인수를 받는다. 여기에서도 러스트의 소유권 원칙을 볼 수 있다. 첫 번째 매개변수는 질문 ID에 접근하는데, 이렇게 하면 질문의 소유권을 해시 맵의 insert 메서드로 보낸다. 함수 다른 곳에서 질문을 사용하지 않는다면 괜찮겠지만, 두 번째 인수로 질문을 받아 해시 맵에 저장하려고 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.