Skip to content

bsbds/dirtio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dirtio

A simple asynchronous runtime for Rust.

Example

A TCP echo server.

Add dependencies to Cargo.toml.

[dependencies]
dirtio = { git = "https://github.com/bsbds/dirtio.git" }

Then in main.rs:

use dirtio::net::tcp::TcpListener;
use futures::{AsyncReadExt, AsyncWriteExt};

#[dirtio::main]
fn main() -> Result<(), Box<dyn std::error::Error>> {
    let addr = "127.0.0.1:8080";

    let mut listener = TcpListener::bind(addr.parse().unwrap())?;
    println!("listening on: {}", addr);

    loop {
        let (mut stream, _) = listener.accept().await?;

        dirtio::spawn(async move {
            let mut buf = vec![0; 4096];

            loop {
                match stream.read(&mut buf).await {
                    Err(e) => {
                        println!("failed to read data: {}", e);
                        break;
                    }
                    Ok(n) if n == 0 => break,
                    Ok(n) => {
                        if let Err(e) = stream.write_all(&buf[0..n]).await {
                            println!("failed to write data: {}", e);
                            break;
                        }
                    }
                }
            }
        });
    }
}

About

A simple asynchronous runtime for Rust

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages