[rust] 러스트 코드의 비동기 프로그래밍

러스트는 안전하고 효율적인 시스템 프로그래밍 언어로서, 비동기 프로그래밍에 강점을 지녔습니다. 러스트에서 비동기 프로그래밍을 하기 위해서는 async/await 구문과 Future 트레이트를 이해하는 것이 중요합니다.

async/await 구문

러스트에서의 async/await는 비동기 프로그래밍을 보다 쉽게 처리할 수 있도록 해줍니다. async 키워드를 함수나 블록 앞에 붙여주면 해당 함수나 블록이 비동기로 동작한다는 것을 나타내며, await 키워드는 비동기 작업의 완료를 기다립니다.

아래는 async/await를 사용하여 비동기적으로 데이터를 가져오고 처리하는 간단한 예제입니다.

use reqwest;

async fn fetch_url(url: &str) -> Result<String, reqwest::Error> {
    let response = reqwest::get(url).await?;
    response.text().await
}

#[tokio::main]
async fn main() {
    let url = "https://www.example.com";
    match fetch_url(url).await {
        Ok(body) => println!("Fetched body: {}", body),
        Err(e) => eprintln!("Error fetching URL: {}", e),
    }
}

Future 트레이트

러스트의 Future 트레이트는 비동기적으로 완료되는 연산을 추상화한 것입니다. async/awaitFuture를 기반으로 동작하며, Future를 직접 다루는 경우에도 사용됩니다.

아래는 Future를 직접 사용하여 값을 비동기적으로 생성하는 예제입니다.

use futures::future;

fn main() {
    let fut = future::ready(42);
    let result = futures::executor::block_on(fut);
    println!("Future result: {}", result);
}

러스트의 비동기 프로그래밍을 시작하기 위한 샘플 코드와 설명을 제공하였습니다. 자세한 내용은 러스트 공식 문서를 참고하시기 바랍니다.