Skip to content

Commit

Permalink
Merge pull request #523 from async-rs/update-lib-example
Browse files Browse the repository at this point in the history
polish lib.rs examples
  • Loading branch information
yoshuawuyts authored Nov 21, 2019
2 parents 02e1d7e + cffacf7 commit c9a2e74
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 16 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
uses: actions-rs/cargo@v1
with:
command: test
args: --all --features unstable
args: --all --features unstable attributes

check_fmt_and_docs:
name: Checking fmt and docs
Expand Down
20 changes: 14 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,28 @@ syntax.

## Examples

All examples require the [`"attributes"` feature] to be enabled. This feature
is not enabled by default because it significantly impacts compile times. See
[`task::block_on`] for an alternative way to start executing tasks.

```rust
use async_std::task;
async fn say_hello() {
println!("Hello, world!");
}

fn main() {
task::block_on(async {
println!("Hello, world!");
})
#[async_std::main]
async fn main() {
say_hello().await;
}
```

More examples, including networking and file access, can be found in our
[`examples`] directory.
[`examples`] directory and in our [documentation].

[`examples`]: https://github.com/async-rs/async-std/tree/master/examples
[documentation]: https://docs.rs/async-std#examples
[`task::block_on`]: task/fn.block_on.html
[`"attributes"` feature]: https://docs.rs/async-std/#features

## Philosophy

Expand Down
50 changes: 44 additions & 6 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,17 +131,55 @@
//!
//! # Examples
//!
//! Spawn a task and block the current thread on its result:
//! All examples require the [`"attributes"` feature](#features) to be enabled.
//! This feature is not enabled by default because it significantly impacts
//! compile times. See [`task::block_on`] for an alternative way to start
//! executing tasks.
//!
//! Call an async function from the main function:
//!
//! ```
//! async fn say_hello() {
//! println!("Hello, world!");
//! }
//!
//! #[async_std::main]
//! async fn main() {
//! say_hello().await;
//! }
//! ```
//!
//! Await two futures concurrently, and return a tuple of their output:
//!
//! ```
//! #[async_std::main]
//! async fn main() {
//! let a = async { 1u8 };
//! let b = async { 2u8 };
//! assert_eq!(a.join(b).await, (1u8, 2u8))
//! }
//! ```
//! use async_std::task;
//!
//! fn main() {
//! task::block_on(async {
//! println!("Hello, world!");
//! })
//! Create a UDP server that echoes back each received message to the sender:
//!
//! ```no_run
//! use async_std::net::UdpSocket;
//!
//! #[async_std::main]
//! async fn main() -> std::io::Result<()> {
//! let mut socket = UdpSocket::bind("127.0.0.1:8080")?;
//! println!("Listening on {}", socket.local_addr()?);
//!
//! let mut buf = vec![0u8; 1024];
//!
//! loop {
//! let (recv, peer) = socket.recv_from(&mut buf).await?;
//! let sent = socket.send_to(&buf[..recv], &peer).await?;
//! println!("Sent {} out of {} bytes to {}", sent, recv, peer);
//! }
//! }
//! ```
//! [`task::block_on`]: task/fn.block_on.html
//!
//! # Features
//!
Expand Down
8 changes: 5 additions & 3 deletions src/task/block_on.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,11 @@ use crate::task::{Context, Poll, Task, Waker};
/// ```no_run
/// use async_std::task;
///
/// task::block_on(async {
/// println!("Hello, world!");
/// })
/// fn main() {
/// task::block_on(async {
/// println!("Hello, world!");
/// })
/// }
/// ```
pub fn block_on<F, T>(future: F) -> T
where
Expand Down

0 comments on commit c9a2e74

Please sign in to comment.