tokioの非同期IO
これは poll_read というメソッドを持っていて、読み取り可能(OK)か、Pendingかなどの情報が返ってくる
AsyncReadExtをuseすると、read が生えて、返り値はawaitできる
code:_.rs
use tokio::io;
use tokio::io::{AsyncRead, AsyncReadExt, repeat};
async fn main() -> io::Result<()> {
let read = repeat(0xFF).read(&mut buf).await?;
println!("{:?}", buf);
Ok(())
}
読み取りバッファーの管理
読み取ったデータを一時的に格納しておく領域が欲しいが、
tcpのようなストリーム指向の場合、readできれいに1フレーム分読み取れる保証はない
よって途中までは読みつつ、もう一度readして続きのデータが欲しいといったケースがある