rasi-ext 0.1.11

This library includes extend features or experimental features that are useful for asynchronous programming.
Documentation
use futures::{AsyncReadExt, AsyncWriteExt};
use rasi::{
    executor::spawn,
    inter_process::{IpcListener, IpcStream},
};

mod init;

#[futures_test::test]
async fn test_echo() {
    init::init();

    let mut server = IpcListener::bind("echo").await.unwrap();

    let message = b"hello world";

    spawn(async move {
        let mut stream = server.accept().await.unwrap();

        let mut buf = vec![0; 32];

        let read_size = stream.read(&mut buf).await.unwrap();

        assert_eq!(&buf[..read_size], message);

        stream.write(&buf[..read_size]).await.unwrap();
    });

    let mut client = IpcStream::connect("echo").await.unwrap();

    client.write(message).await.unwrap();

    let mut buf = vec![0; 32];

    let read_size = client.read(&mut buf).await.unwrap();

    assert_eq!(&buf[..read_size], message);
}