azur 0.3.1

A no_std Rust crate that implements an executor/reactor and futures using io_uring
Documentation
//! Implements a single-threaded reactor and executor using Linux's `io_uring` system.

#![no_std]
#![feature(noop_waker)]
#![feature(thread_local)]
#![feature(slice_ptr_get)]
#![feature(slice_ptr_len)]
#![feature(lazy_cell)]

#[cfg(feature = "std")]
extern crate std;

extern crate alloc;

pub mod buf;
pub mod future;
mod io_uring;
mod op;
mod reactor;
pub mod scope;
mod task;

pub use op::*;
pub use scope::*;

use core::future::Future;

pub fn spawn<F: Future<Output = ()> + 'static>(future: F) {
    reactor::Reactor::spawn(&reactor::REACTOR, future);
}

pub fn run() -> lx::Result<()> {
    reactor::Reactor::run(&reactor::REACTOR)
}

#[cfg(feature = "std")]
pub(crate) fn freeze() {
    loop {
        std::thread::park();
    }
}

#[cfg(not(feature = "std"))]
pub(crate) fn freeze() {
    loop {}
}