pub trait AsyncVariableReadable {
// Required method
fn poll_read_single(
self: Pin<&mut Self>,
cx: &mut Context<'_>
) -> Poll<Result<u8>>;
// Provided method
fn poll_read_more(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut ReadBuf<'_>
) -> Poll<Result<()>> { ... }
}