A Rust async function returns a Future: a value that may produce its output now or later. To poll a future is to check its progress. Each check returns Poll::Pending if the output is not ready, or Poll::Ready(value) if it is. section 19.3.1 section 19.3.2
pub enum Poll<T> {
Ready(T),
Pending,
}
Poll has two possible states. Only Ready carries the future’s output. section 19.3.1
Usually, you do not call the poll method yourself. Write .await inside an async function or block, and an async runtime manages the polling. If the future is not ready, the runtime can come back to it later. The poll method’s signature also mentions Pin and Context; understanding Pin in depth is not needed to get started. section 19.3.1 section 19.3.2 section 19.3.3
Awaiting a value
With #[tokio::main] above async fn main(), `let number = async_give_8().await;` gives number a u8 value. Without an async function or block, .await produces a compiler error; simply changing an ordinary main to async fn main() also fails without a runtime setup. section 19.3.2 section 19.3.3

