2.2.3 러스트에서 async/await 다루기

    런타임 위에는 러스트에 통합된 두 구성 요소가 있다. 첫 번째는 async/await 구문이다. 1장에서 이미 본 비동기 HTTP 호출을 수행하는 코드를 살펴보자.

    코드 2-22 async HTTP 호출 예제

    use std::collections::HashMap;
    
    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let resp = reqwest::get("https://httpbin.org/ip")
            .await?
            .json::<HashMap<String, String>>()
            .await?;
        println!("{:#?}", resp);
        Ok(())
    }

    이 코드가 작동하려면 Cargo.toml 파일에 Tokio와 Reqwest 크레이트를 추가해야 한다. 많은 러스트 크레이트는 로직을 기능으로 분할하여 필요한 경우 더 작은 요소만 포함시키는데, 이는 애플리케이션에 필요하지 않은 코드가 포함되지 않도록 하기 위함이다.

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