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 42 43 44 45 46 47 48 49 50 51 52 53
//! # A library for programming stackful coroutines in Rust.
//!
//! May is a high-performant library for programming stackful coroutines with which
//! you can easily develop and maintain massive concurrent programs. It can be thought
//! as the Rust version of the popular Goroutine.
//!
//! ## Features
//! * The stackful coroutine's implementation is based on [generator][generator];
//! * Support schedule on a configurable number of threads for multi-core systems;
//! * Support coroutine's version of a local storage ([CLS][cls]);
//! * Support efficient asynchronous network I/O;
//! * Support efficient timer management;
//! * Support standard synchronization primitives, a semaphore, an MPMC channel, etc;
//! * Support cancellation of coroutines;
//! * Support graceful panic handling that will not affect other coroutines;
//! * Support scoped coroutine creation;
//! * Support general selection for all the coroutine's API;
//! * All the coroutine's API are compatible with the standard library semantics;
//! * All the coroutine's API can be safely called in multi-threaded context;
//! * Both stable, beta, and nightly channels are supported;
//! * Both x86_64 GNU/Linux, x86_64 Windows, x86_64 Mac OS are supported.
// #![deny(missing_docs)]
#![allow(unused_extern_crates)]
#![cfg_attr(nightly, feature(thread_local))]
#![cfg_attr(nightly, feature(core_intrinsics))]
#[macro_use]
extern crate log;
mod cancel;
mod config;
mod join;
mod local;
mod park;
mod pool;
mod sleep;
#[macro_use]
mod macros;
mod coroutine_impl;
mod scheduler;
mod scoped;
mod timeout_list;
mod yield_now;
pub mod coroutine;
pub mod cqueue;
pub mod io;
pub mod net;
pub mod os;
pub mod sync;
pub use crate::config::{config, Config};
pub use crate::local::LocalKey;