더북(TheBook)

먼저 update_question 코드를 살펴보자. 함수에 Store를 전달하는 것 외에도 question_idquestion도 추가된다. 단순해 보이는 변경 때문에 새로운 문제가 생긴다. 사용자가 요청한 질문이 없으면 어떻게 될까? 해시 맵이 질문을 찾지 못하는 경우를 처리해야 한다. 다음 코드는 경로 핸들러 update_questionError 열거 타입에 추가되는 새로운 에러에 대한 것이다. 추가된 새로운 에러에 대응하는 Display 트레이트도 같이 구현한다.

코드 4-33 질문을 수정하고 질문을 찾지 못하면 404를 반환한다

#[derive(Debug)]
enum Error {
    ParseError(std::num::ParseIntError),
    MissingParameters,
    QuestionNotFound,
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match *self {
            Error::ParseError(ref err) => {
                write!(f, "Cannot parse parameter: {}", err)
            }
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.