더북(TheBook)

여기에서 컴파일러와 싸우는 대신 함께 작업하는 법을 배워 보자. 필터를 추가하면 다음과 같은 에러가 발생한다.

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에서 호출하는 함수에 해시 맵을 매개변수로 추가한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.