# bevy_async_task **Repository Path**: happydpc/bevy_async_task ## Basic Information - **Project Name**: bevy_async_task - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-18 - **Last Updated**: 2025-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# Bevy Async Task [![Discord](https://img.shields.io/discord/913957940560531456.svg?label=Loopy&logo=discord&logoColor=ffffff&color=ffffff&labelColor=000000)](https://discord.gg/zrjnQzdjCB) ![MIT/Apache 2.0](https://img.shields.io/badge/license-MIT%2FApache-blue.svg) [![Build status](https://github.com/loopystudios/bevy_async_task/workflows/CI/badge.svg)](https://github.com/loopystudios/bevy_async_task/actions) [![Dependency status](https://deps.rs/repo/github/loopystudios/bevy_async_task/status.svg)](https://deps.rs/repo/github/loopystudios/bevy_async_task) [![crates.io](https://img.shields.io/crates/v/bevy_async_task.svg)](https://crates.io/crates/bevy_async_task) [![docs.rs](https://img.shields.io/docsrs/bevy_async_task)](https://docs.rs/bevy_async_task) A minimum crate for ergonomic abstractions to async programming in Bevy. There is full API support for **wasm** and **native**. Android and iOS are untested (Help needed).
Bevy Async Task provides Bevy system parameters to run asynchronous tasks in the background on web and native with timeouts and output capture. ## Bevy version support |bevy|bevy_async_task| |---|---| |0.16|0.6-0.8, main| |0.15|0.3-0.5| |0.14|0.2| |0.13|0.1| |<= 0.13|Unsupported| ## Usage There are several [examples](examples/) for reference. You can also run examples on web: ```shell # Make sure the Rust toolchain supports the wasm32 target rustup target add wasm32-unknown-unknown cargo run_wasm --example simple ``` ### Polling in systems Poll one task at a time with `TaskRunner`: ```rust async fn long_task() -> u32 { sleep(Duration::from_millis(1000)).await; 5 } fn my_system(mut task_runner: TaskRunner) { if task_runner.is_idle() { task_executor.start(long_task()); info!("Started!"); } match task_runner.poll() { Poll::Ready(v) => { info!("Received {v:?}"); } Poll::Pending => { // Waiting... } } } ``` Poll many similar tasks simultaneously with `TaskPool`: ```rust fn my_system(mut task_pool: TaskPool) { if task_pool.is_idle() { info!("Queueing 5 tasks..."); for i in 1..=5 { task_pool.spawn(async move { // Closures work too! sleep(Duration::from_millis(i * 1000)).await; i }); } } for status in task_pool.iter_poll() { if let Poll::Ready(v) = status { info!("Received {v:?}"); } } } ``` We also have a [`cross_system` example](./examples/cross_system.rs). ## Community All Loopy projects and development happens in the [Loopy Discord](https://discord.gg/KSfKceUKde). The discord is open to the public. Contributions are welcome by pull request. The [Rust code of conduct](https://www.rust-lang.org/policies/code-of-conduct) applies. ## License Licensed under either of - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or ) - MIT license ([LICENSE-MIT](LICENSE-MIT) or ) at your option ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.