| //@ check-pass |
| //@ edition:2021 |
| |
| use std::fmt::{self, Display}; |
| use std::future::Future; |
| use std::io; |
| use std::pin::Pin; |
| use std::task::{Context, Poll}; |
| |
| struct AsyncStdout; |
| |
| impl AsyncStdout { |
| fn write_fmt<'a>(&'a mut self, _args: fmt::Arguments) -> WriteFmtFuture<'a, Self> |
| where |
| Self: Unpin, |
| { |
| WriteFmtFuture(self) |
| } |
| } |
| |
| struct WriteFmtFuture<'a, T>(&'a mut T); |
| |
| impl<'a, T> Future for WriteFmtFuture<'a, T> { |
| type Output = io::Result<()>; |
| fn poll(self: Pin<&mut Self>, cx: &mut Context) -> Poll<Self::Output> { |
| unimplemented!() |
| } |
| } |
| |
| async fn async_main() { |
| let _write = write!(&mut AsyncStdout, "...").await; |
| let _writeln = writeln!(&mut AsyncStdout, "...").await; |
| } |
| |
| fn main() { |
| let _ = async_main; |
| } |