백그라운드에서 무슨 일이 일어나고 있는지 알아보기 위해 예를 들어 보자. 그림 2-12를 참조한다.
1 러스트 코드에서 함수를 async로 표시한다. 함수 반환이 이루어지는 부분에 await를 붙이면 컴파일할 때 해당 함수가 Future 타입을 반환한다고 런타임(tokio 등)에 알려준다.
2 런타임은 이 코드 조각을 가져와 실행자에게 넘긴다. 실행자는 Future에서 poll 메서드를 호출할 책임을 진다.
3 네트워크 요청인 경우 런타임은 커널에 비동기 소켓을 생성하는 Mio에 요청을 전달하고 작업을 완료하는 데 필요한 CPU 시간을 요청한다.
4 커널이 작업(예를 들어 요청 보내기와 응답 받기)을 완료하면 소켓에서 대기 중인 프로세스에 알린다. 그런 다음 반응자는 실행자를 깨워 커널에서 반환된 결과로 계속 계산하게 한다.