[][src]Crate juliex

juliex is a concurrent executor for Rust futures. It is implemented as a threadpool executor using a single, shared queue. Algorithmically, it is very similar to the Threadpool executor provided by the futures crate. The main difference is that juliex uses a crossbeam channel and performs a single allocation per spawned future, whereas the futures Threadpool uses std concurrency primitives and multiple allocations.

Similar to romio - an IO reactor - juliex currently provides no user configuration. It exposes the most minimal API possible.



use std::io;

use futures::StreamExt;
use futures::executor;
use futures::io::AsyncReadExt;

use romio::{TcpListener, TcpStream};

fn main() -> io::Result<()> {
    executor::block_on(async {
        let mut listener = TcpListener::bind(&"".parse().unwrap())?;
        let mut incoming = listener.incoming();

        println!("Listening on");

        while let Some(stream) = incoming.next().await {
            let stream = stream?;
            let addr = stream.peer_addr()?;

            juliex::spawn(async move {
                println!("Accepting stream from: {}", addr);


                println!("Closing stream from: {}", addr);


async fn echo_on(stream: TcpStream) -> io::Result<()> {
    let (mut reader, mut writer) = stream.split();
    reader.copy_into(&mut writer).await?;



A threadpool that futures can be spawned on.



Spawn a task on the threadpool.