[][src]Crate may

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.

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

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