rust-async-patterns
Освойте паттерны асинхронного программирования на Rust
Également disponible depuis: wshobson
Создание асинхронных приложений на Rust требует понимания сложных паттернов конкурентности. Этот навык предоставляет готовые к продакшену паттерны Tokio для задач, каналов, потоков и корректной обработки завершения работы.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "rust-async-patterns". Создайте асинхронную функцию, которая получает данные с 5 URL с ограничением конкурентности 3
Résultat attendu:
Использует stream::iter с buffer_unordered(3) для параллельной обработки URL, возвращая Vec из Results с правильной обработкой ошибок для каждой операции получения.
Utilisation de "rust-async-patterns". Как безопасно разделять состояние между асинхронными задачами?
Résultat attendu:
Рекомендует Arc<RwLock<T>> для сценариев с преобладанием чтения или Arc<Mutex<T>> для сценариев с преобладанием записи, с примерами, показывающими паттерны .read().await и .write().await.
Audit de sécurité
SûrAll 51 static analysis findings are false positives. The skill contains documentation-only markdown files with Rust code examples. The static analyzer incorrectly flagged: markdown code fence backticks as shell execution, tokio::spawn (async task spawning) as process execution, SQL queries as system reconnaissance, and example URLs as hardcoded secrets. No executable code or security risks present.
Score de qualité
Ce que vous pouvez construire
Разработка сетевых сервисов
Создание конкурентных HTTP-серверов или обработчиков WebSocket с использованием задач Tokio и каналов для распределения запросов и плавного завершения работы.
Реализация конвейеров данных
Обработка потоковых данных с использованием асинхронных потоков, buffer_unordered для контролируемой конкурентности и правильной передачи ошибок.
Отладка асинхронного кода
Диагностика проблем с взаимоблокировками, понимание отмены задач и реализация правильной инструментаризации трассировки для асинхронных приложений.
Essayez ces prompts
Помогите настроить базовое асинхронное приложение Tokio с правильной обработкой ошибок. Мне нужно одновременно получать данные из нескольких URL и корректно обрабатывать любые сбои.
Мне нужно реализовать паттерн пула рабочих, где несколько задач-производителей отправляют элементы работы задачам-потребителям. Покажите, как использовать каналы mpsc с правильной обработкой завершения.
Я обрабатываю большой набор данных как поток. Реализуйте порционную обработку с buffer_unordered для ограничения конкурентности до 10 элементов с правильной обработкой ошибок для неудачных элементов.
Bonnes pratiques
- Используйте tokio::select! для соревнования фьючеров и реализации точек отмены в длительно выполняющихся задачах
- Отдавайте предпочтение каналам перед общим состоянием для коммуникации между задачами, чтобы избежать взаимоблокировок и уменьшить contention блокировок
- Инструментируйте асинхронные функции с атрибутами tracing и соблюдайте CancellationToken для плавного завершения работы
Éviter
- Блокировка асинхронного кода с помощью std::thread::sleep или блокирующих I/O-операций, которые вызывают голодание рантайма
- Удержание блокировок через точки await, что может вызвать взаимоблокировки, когда несколько задач конкурируют за одни и те же блокировки
- Создание неограниченных задач без семафоров или ограничений JoinSet, ведущее к исчерпанию ресурсов