update_question 함수와 마찬가지로 HashMap에서 키로 값을 가져올 때 match를 쓰는데, 그 이유는 질문을 찾지 못할 수도 있기 때문이다. .remove를 사용할 때 질문 ID를 전달할 수 있으며, 무언가를 찾으면 올바른 상태 코드, 메시지와 함께 Ok를 반환하며, 여기에서 언더스코어(_)는 반환되는 값이 필요 없음을 알려준다.
서버에 새로운 경로를 추가하는 것으로 구현을 마무리한다. 이번에는 본문을 파싱하지 않는다는 점을 제외하면 update_question 경로와 묘하게 비슷하다.
코드 4-37 질문 삭제를 위한 경로 추가하기
...
#[tokio::main]
async fn main() {
let store = Store::new();
let store_filter = warp::any().map(move || store.clone());
...
let update_question = warp::put()
.and(warp::path("questions"))
.and(warp::path::param::<String>())
.and(warp::path::end())
.and(store_filter.clone())
.and(warp::body::json())
.and_then(update_question);