그러나 복구 핸들러에서 사용자 정의 에러를 반환하려면 먼저 세 가지 작업을 수행해야 한다.
1 사용자 정의 에러 타입을 만든다.
2 이 타입에 Warp의 Reject 트레이트를 구현한다.
3 경로 핸들러에서 사용자 정의 타입을 반환한다.
결과 코드는 다음과 같다.
코드 3-8 사용자 정의 에러를 더하고 반환하기
use warp::{Filter, reject::Reject};
...
#[derive(Debug)]
struct InvalidId;
impl Reject for InvalidId {}
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(),