🦀 Rust Journey 🦀
889 subscribers
52 photos
2 videos
1 file
240 links
Наше коммьюнити объединяет как новичков, так и опытных разработчиков, готовых поделиться своими знаниями и опытом. Здесь вы найдете обучающие материалы, обсуждения новейших тенденций в Rust и многое другое.

по всем вопросам: @denis_sukhoverkhov
Download Telegram
Асинхронное программирование в Rust

Привет, пора вкатываться понемногу в асинхронщину. Рекомендую посмотреть этот урок

Intro to async/.await in Rust

#rust #async #await

@rust_journey
👍84🔥3
Асинхронное программирование в Rust с `async`/`await`

Асинхронное программирование перевернуло представление о том, как должны выполняться задачи ввода-вывода и другие длительные операции, не блокируя основной поток выполнения. 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🔥31👏1