Асинхронное программирование в Rust
Привет, пора вкатываться понемногу в асинхронщину. Рекомендую посмотреть этот урок
Intro to async/.await in Rust
#rust #async #await
@rust_journey
Привет, пора вкатываться понемногу в асинхронщину. Рекомендую посмотреть этот урок
Intro to async/.await in Rust
#rust #async #await
@rust_journey
YouTube
Intro to async/.await in Rust
In today's video I'm diving into the async/.await model in Rust!
#rust #programming #tutorial
#rust #programming #tutorial
👍8❤4🔥3
Асинхронное программирование в Rust с `async`/`await`
Асинхронное программирование перевернуло представление о том, как должны выполняться задачи ввода-вывода и другие длительные операции, не блокируя основной поток выполнения. Rust присоединился к этому движению, представив ключевые слова
Как это работает?
- `async`: Оборачивает блок кода или функцию, превращая её в асинхронную. Вместо того чтобы немедленно возвращать результат, асинхронная функция возвращает
- `await`: Используется внутри асинхронных функций для "ожидания" результата другой асинхронной операции. Ключевое отличие
Пример
Почему `async`/`await` так важны?
- Производительность и масштабируемость: Асинхронный код позволяет обрабатывать множество задач конкурентно, эффективно используя системные ресурсы, особенно в I/O-интенсивных приложениях.
- Удобочитаемость:
#Rust #async #await
@rust_journey
Асинхронное программирование перевернуло представление о том, как должны выполняться задачи ввода-вывода и другие длительные операции, не блокируя основной поток выполнения. Rust присоединился к этому движению, представив ключевые слова
async
и await
, которые значительно упрощают написание асинхронного кода.Как это работает?
- `async`: Оборачивает блок кода или функцию, превращая её в асинхронную. Вместо того чтобы немедленно возвращать результат, асинхронная функция возвращает
Future
— объект, представляющий не завершенный результат, который может быть получен позже.- `await`: Используется внутри асинхронных функций для "ожидания" результата другой асинхронной операции. Ключевое отличие
await
от блокирующего ожидания в том, что во время ожидания текущая задача может быть "приостановлена", позволяя другим задачам выполняться.Пример
async fn fetch_data() -> String {
// Представим, что здесь асинхронный запрос к серверу
"данные с сервера".to_string()
}
async fn process_data() {
let data = fetch_data().await; // Ожидаем завершения запроса, не блокируя поток
println!("Обработанные данные: {}", data);
}
fn main() {
let future = process_data(); // Возвращает Future, но не выполняет функцию
futures::executor::block_on(future); // Запускаем Future до завершения
}
Почему `async`/`await` так важны?
- Производительность и масштабируемость: Асинхронный код позволяет обрабатывать множество задач конкурентно, эффективно используя системные ресурсы, особенно в I/O-интенсивных приложениях.
- Удобочитаемость:
async
/await
упрощают структуру асинхронного кода, делая его похожим на синхронный и легче воспринимаемым, сокращая необходимость в обратных вызовах (callbacks) или машинах состояний.#Rust #async #await
@rust_journey
👍7🔥3❤1👏1