13 releases (8 breaking)
Uses old Rust 2015
0.8.1 | Aug 21, 2016 |
---|---|
0.7.0 | Jun 25, 2016 |
0.4.1 | Mar 20, 2016 |
0.2.0-pre1 | Nov 4, 2015 |
0.0.4 | Jul 4, 2015 |
#882 in Concurrency
52 downloads per month
Used in colerr
165KB
4K
SLoC
mioco
Code snippet
mioco::start(|| -> io::Result<()> {
let addr = listend_addr();
let listener = try!(TcpListener::bind(&addr));
println!("Starting tcp echo server on {:?}", try!(listener.local_addr()));
loop {
let mut conn = try!(listener.accept());
mioco::spawn(move || -> io::Result<()> {
let mut buf = [0u8; 1024 * 16];
loop {
let size = try!(conn.read(&mut buf));
if size == 0 {/* eof */ break; }
let _ = try!(conn.write_all(&mut buf[0..size]));
}
Ok(())
});
}
}).unwrap().unwrap();
This trivial code scales very well. See benchmarks.
Contributors welcome!
Mioco is looking for contributors. See Contributing page for details.
Introduction
Scalable, coroutine-based, asynchronous IO handling library for Rust programming language.
Mioco uses asynchronous event loop, to cooperatively switch between
coroutines (aka. green threads), depending on data availability. You
can think of mioco
as Node.js for Rust or Rust green
threads on top of mio
.
Read Documentation for details and features.
If you want to say hi, or need help use #mioco gitter.im.
To report a bug or ask for features use github issues.
Building & running
Standalone
To start test echo server:
cargo run --release --example echo
For daily work:
make all
In your project
In Cargo.toml:
[dependencies]
mioco = "*"
In your main.rs
:
#[macro_use]
extern crate mioco;
Projects using mioco:
- colerr - colorize stderr;
- mioco-openssl example
Send PR or drop a link on gitter.
Dependencies
~5MB
~100K SLoC