더북(TheBook)

구조체에 다른 사용자 정의 객체를 포함하는 경우, 해당 객체도 구조체 정의 위에 Serialize를 추가해야 한다. Question 구조체에 String과 같은 기본 러스트 표준(std) 타입이 없으면, 역시 Serialize 트레이트를 구현해야 한다.

Serialize 트레이트를 추가하면 Warp의 JSON 함수가 충족된다. 우리가 전달하는 값은 새로운 질문에 대한 참조로 Serialize를 구현해야 한다.

async fn get_questions() -> Result<impl warp::Reply, warp::Rejection> {
    let question = Question::new(
        QuestionId::from_str("1").expect("No id provided"),
        "First Question".to_string(),
        "Content of question".to_string(),
        Some(vec!["faq".to_string()]),
    );

    Ok(warp::reply::json(
        &question
    ))
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.