여기에서 컴파일러와 싸우는 대신 함께 작업하는 법을 배워 보자. 필터를 추가하면 다음과 같은 에러가 발생한다.
error[E0593]: function is expected to take 2 arguments, but it takes 1 argument --> src/main.rs:147:19 | 79 | async fn get_questions( store: Store) -> | Result<impl warp::Reply, warp::Rejection> { | --------------------------------------- takes 1 argument ... 147 | .and_then(get_questions); | ^^^^^^^^^^^^^ expected function | that takes 2 arguments | = note: required because of the requirements on the impl of `warp::generic::Func<(_, Store)>` for `fn(Store) -> impl Future {get_questions}`
컴파일러는 expected function that takes 2 arguments가 있는 줄에서 Warp가 get_questions 함수를 호출할 때 추가 매개변수가 있어야 한다고 알려준다. 필터 체인(코드 4-15)에 warp::query를 추가하여 마지막 and_then에서 호출하는 함수에 해시 맵을 매개변수로 추가한다.