1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//! Tiny async runtime for `vexide`.
//!
//! This crate contains an implementation of vexide's async executor, which is driven by `smol`'s
//! [`async_task`] crate. The executor is optimized for use on VEXos-based systems and supports
//! spawning tasks and blocking on futures. It has a reactor to improve the performance of some
//! futures (such as [`Sleep`](crate::time::Sleep)).
use Future;
pub use spawn;
use crateEXECUTOR;
/// Synchronization primitives for async code.
///
/// vexide programs often use async [tasks](crate::task) to run multiple operations concurrently.
/// These primitives provide methods for tasks to safely communicate with each other and share data.
/// This is vexide's async equivalent to the [`std::sync` module].
///
/// [`std::sync` module]: https://doc.rust-lang.org/stable/std/sync/index.html
/// Blocks the current task until a return value can be extracted from the provided future.
///
/// Does not poll all futures to completion.