#[tokio::main]
async fn main() {
let get_items = warp::get() ➍
.and(warp::path("questions"))
.and(warp::path::end()) ➎
.and_then(get_questions);
let routes = get_items; ➏
warp::serve(routes) ➐
.run(([127, 0, 0, 1], 3030))
.await;
}
➊ Warp가 사용할 수 있게 회신과 거부를 반환하는 첫 번째 경로 핸들러를 만든다.
➋ 요청하는 클라이언트에 반환할 새로운 question을 생성한다.
➌ Warp의 json 응답을 사용해 question의 JSON 버전을 반환한다.
➍ 하나 이상의 필터를 결합하는 Warp의 .and 함수를 사용해 큰 필터 하나를 생성하고 get_items에 할당한다.
➎ path::end를 써서 정확히 /questions(예를 들어 /questions/further/params 같은 것은 안 됨)에서만 수신을 받겠다고 신호를 보낸다.
➏ 나중의 편의를 위해 경로 변수 routes를 정의한다.
➐ routes 필터를 Warp의 serve 메서드로 전달하고 서버를 시작한다.