[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/await
는 Future
를 기반으로 동작하며, Future
를 직접 다루는 경우에도 사용됩니다.
아래는 Future
를 직접 사용하여 값을 비동기적으로 생성하는 예제입니다.
use futures::future;
fn main() {
let fut = future::ready(42);
let result = futures::executor::block_on(fut);
println!("Future result: {}", result);
}
러스트의 비동기 프로그래밍을 시작하기 위한 샘플 코드와 설명을 제공하였습니다. 자세한 내용은 러스트 공식 문서를 참고하시기 바랍니다.