더북(TheBook)
            tags,
        }
    }
}

fn main() {
    let question = Question::new(
        QuestionId("1".to_string()),
        "First Question".to_string(),
        "Content of question".to_string(),
        Some(vec!["faq".to_string()]),
    );
    println!("{:?}", question);
}

아직 개선할 여지가 남아 있다. QuestionId 구조체 안에 있는 질문 ID를 추상화했지만, 여전히 이 구조체가 String을 입력으로 사용한다. 구현의 세부 사항을 숨기고 질문에 대한 id를 더 간편하게 생성하게 할 수 있다.

러스트에는 범용으로 사용되는 기능에 대한 트레이트가 있다. 그중 하나는 앞에서 설명한 ToString 트레이트와 유사한 FromStr 트레이트이다. 다음과 같이 FromStr을 사용할 수 있다.

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