Crate gj [−] [src]
A library providing high-level abstractions for event loop concurrency, heavily borrowing ideas from KJ. Allows for coordination of asynchronous tasks using promises as a basic building block.
Example
use gj::{EventLoop, Promise}; EventLoop::top_level(|wait_scope| { let (promise1, fulfiller1) = Promise::<(),()>::and_fulfiller(); let (promise2, fulfiller2) = Promise::<(),()>::and_fulfiller(); let promise3 = promise2.then(|_| { println!("world"); Promise::ok(()) }); let promise4 = promise1.then(move |_| { println!("hello "); fulfiller2.fulfill(()); Promise::ok(()) }); fulfiller1.fulfill(()); Promise::all(vec![promise3, promise4].into_iter()).wait(wait_scope).unwrap(); Ok(()) }).expect("top level");
Modules
io |
Asynchronous input and output. |
Macros
pry! |
Like |
Structs
EventLoop |
A queue of events being executed in a loop on a single thread. |
ForkedPromise |
The result of |
Promise |
A computation that might eventually resolve to a value of type |
PromiseFulfiller |
A handle that can be used to fulfill or reject a promise. If you think of a promise as the receiving end of a oneshot channel, then this is the sending end. |
TaskSet |
Holds a collection of |
WaitScope |
A scope in which asynchronous programming can occur. Corresponds to the top level scope of some event loop. Can be used to wait for the result of a promise. |
Traits
FulfillerDropped |
Specifies an error to generate when a |
TaskReaper |
Callbacks to be invoked when a task in a |