더북(TheBook)

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 크레이트를 추가해야 한다. 많은 러스트 크레이트는 로직을 기능으로 분할하여 필요한 경우 더 작은 요소만 포함시키는데, 이는 애플리케이션에 필요하지 않은 코드가 포함되지 않도록 하기 위함이다.

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