더북(TheBook)

코드 4-4 질문을 추가하는 메서드를 저장소에 추가하기

...
impl Store {
    ...

    fn add_question(mut self, question: Question) -> Self {
        self.questions.insert(question.id.clone(), question);
        self
    }
}
...

매개변수로 질문 항목과 mut self를 전달한다(mut를 사용해야 질문을 추가하여 self를 변경할 수 있음). 반환 값은 Self이며, 이 경우 Store를 의미한다.

HashMap 메서드인 insert를 써서 본문에 질문을 추가한다. 해시 맵은 첫 번째 인수(questionid를 삽입하는 데 사용)에 문자열을 받고, 두 번째 인수에 질문 내용을 받는다. 반환 값은 업데이트된 questions 해시 맵을 가지는 Store 구조를 생성해 반환한다.

id의 부분적인 소유권과 question의 전체 소유권을 store에 넘겨야 하기 때문에 id를 복제했다. clone을 제거하면 다음 같은 에러가 발생한다.

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