3.1.1 Warp에 있는 기능
러스트는 표준 라이브러리에 HTTP 구현을 포함하지 않는다는 점을 기억하자. 따라서 웹 프레임워크는 자체적으로 HTTP 구현을 만들어내거나 다른 크레이트를 사용해야 한다. 여기서 Warp는 Hyper 크레이트를 사용한다. Hyper는 러스트로 작성된 HTTP 서버로 HTTP/1, HTTP/2, 비동기 개념을 지원하기 때문에 웹 프레임워크의 기반으로는 완벽하다.
앞서 1~2장에서 모든 비동기 작업에는 런타임이 필요하다는 것과 러스트는 표준 라이브러리에 비동기 프로그래밍을 위한 런타임을 넣지 않기로 결정했다는 것을 배웠다. 따라서 Hyper(결과적으로 Warp)는 커뮤니티 라이브러리 중 하나를 기반으로 구축해야 한다. Warp는 Tokio를 선택했다. Warp로 작업할 때 Hyper를 명시적으로 포함할 필요가 없다. 그러나 종속성 항목에 Tokio를 추가해야 하고 프로젝트에 수동으로 추가해야 한다.
Hyper를 포함하지 않아도 되는 이유는 Warp 자체가 Hyper를 자체 코드베이스로 가져오고 Hyper 크레이트 위에서 빌드되기 때문이다. 그러나 Tokio 크레이트를 사용해 main 함수에 애너테이션을 붙여야 하므로 (그리고 이 책의 뒷부분에서 다른 Tokio 매크로와 함수를 사용해야 하므로) 종속성을 별도로 설정해야 한다.