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을 사용할 수 있다.