azur/
lib.rs

1//! Implements a single-threaded reactor and executor using Linux's `io_uring` system.
2
3#![no_std]
4#![feature(noop_waker)]
5#![feature(thread_local)]
6#![feature(slice_ptr_get)]
7#![feature(slice_ptr_len)]
8#![feature(lazy_cell)]
9
10#[cfg(feature = "std")]
11extern crate std;
12
13extern crate alloc;
14
15pub mod buf;
16pub mod future;
17mod io_uring;
18mod op;
19mod reactor;
20pub mod scope;
21mod task;
22
23pub use op::*;
24pub use scope::*;
25
26use core::future::Future;
27
28pub fn spawn<F: Future<Output = ()> + 'static>(future: F) {
29    reactor::Reactor::spawn(&reactor::REACTOR, future);
30}
31
32pub fn run() -> lx::Result<()> {
33    reactor::Reactor::run(&reactor::REACTOR)
34}
35
36#[cfg(feature = "std")]
37pub(crate) fn freeze() {
38    loop {
39        std::thread::park();
40    }
41}
42
43#[cfg(not(feature = "std"))]
44pub(crate) fn freeze() {
45    loop {}
46}