다른 언어와 달리 러스트에서는 퓨처에 의한 작업이 런타임으로 전달된 후 능동적으로 수행될 때만 시작된다. 비동기 함수는 Future 타입을 반환하고, 해당 함수의 호출자는 반환된 퓨처를 런타임에 전달해 작업을 진행시킨다.
개발자는 함수를 호출할 때 .await를 추가하여 런타임에 해당 함수를 실행할 것을 지시한다. 8장에서 사용하겠지만, 퓨처를 시작하는 다른 방법(예를 들어 Tokio의 join! 매크로, http://mng.bz/694D)도 있다.
그림 1-5는 이전에 선보였고 코드 1-12에서 사용했던 구성 요소이다. 2장에서 이 주제를 더 깊이 다루겠다. 러스트는 표준 라이브러리에서 구문과 타입을 제공하고 런타임과 커널 추상화는 커뮤니티에서 구현하도록 한다.
▲ 그림 1-5 러스트는 비동기 프로그래밍을 위한 구문과 타입을 제공하지만 런타임 및 커널 추상화는 핵심 언어 외부에서 구현된다
기본적으로 선택된 웹 프레임워크에 따라 어떤 런타임을 쓸지를 정한다. 해당 프레임워크에서 필요한 런타임을 지정하기 때문이다.