Crate may

Source
Expand description

§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;
  • 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.

Re-exports§

pub use may_queue as queue;

Modules§

coroutine
cqueue
io
coroutine io utilities
net
Networking primitives
os
sync

Macros§

coroutine_local
A macro to create a static of type LocalKey
cqueue_add
macro used to create the select coroutine that will run in a infinite loop, and generate as many events as possible
cqueue_add_oneshot
macro used to create the select coroutine that will run only once, thus generate only one event
go
macro used to spawn a coroutine
go_with
macro used to spawn a coroutine with options such as name, stack_size.
join
macro used to join all scoped sub coroutines
loop_select
macro used to select in a infinite loop it never returns, and will run forever
select
macro used to select for only one event it will return the index of which event happens first

Structs§

Config
May Configuration type
LocalKey
A key for local data stored in a coroutine.

Functions§

config
get the may configuration instance