use
{
futures_ringbuf :: { * } ,
futures :: { SinkExt, StreamExt, join } ,
asynchronous_codec :: { Framed, LinesCodec } ,
};
#[async_std::main]
async fn main()
{
let mock = RingBuffer::new( 13 );
let (mut writer, mut reader) = Framed::new( mock, LinesCodec{} ).split();
let send_task = async move
{
writer.send( "Hello World\n".to_string() ).await.expect( "send" );
println!( "sent first line" );
writer.send( "Second line\n".to_string() ).await.expect( "send" );
println!( "sent second line" );
writer.close().await.expect( "close sender" );
println!( "sink closed" );
};
let receive_task = async move
{
while let Some(msg) = reader.next().await.transpose().expect( "receive message" )
{
println!( "Received: {:#?}", msg );
}
};
join!( send_task, receive_task );
}