diff --git a/src/lib.rs b/src/lib.rs
index 48eaa0693..21f5f8acc 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,3 +1,4 @@
+#![allow(rustdoc::invalid_html_tags)]
//! # Async version of the Rust standard library
//!
//! `async-std` is a foundation of portable Rust software, a set of minimal and battle-tested
@@ -191,7 +192,7 @@
//! unstable
+//! > unstable
//! are available only when the `unstable` Cargo feature is enabled:
//!
//! ```toml
@@ -204,7 +205,7 @@
//! attributes
+//! > attributes
//! are available only when the `attributes` Cargo feature is enabled:
//!
//! ```toml
diff --git a/src/sync/mod.rs b/src/sync/mod.rs
index 35203a6ea..1d8579614 100644
--- a/src/sync/mod.rs
+++ b/src/sync/mod.rs
@@ -95,9 +95,9 @@
//! at the same time: In multi-threaded scenarios, you can use two
//! kinds of primitives to deal with synchronization:
//! - [memory fences] to ensure memory accesses are made visible to
-//! other CPUs in the right order.
+//! other CPUs in the right order.
//! - [atomic operations] to ensure simultaneous access to the same
-//! memory location doesn't lead to undefined behavior.
+//! memory location doesn't lead to undefined behavior.
//!
//! [prefetching]: https://en.wikipedia.org/wiki/Cache_prefetching
//! [compiler fences]: https://doc.rust-lang.org/std/sync/atomic/fn.compiler_fence.html
diff --git a/src/task/block_on.rs b/src/task/block_on.rs
index fa66f915b..3ab4dc06f 100644
--- a/src/task/block_on.rs
+++ b/src/task/block_on.rs
@@ -19,11 +19,9 @@ use crate::task::Builder;
/// ```no_run
/// use async_std::task;
///
-/// fn main() {
-/// task::block_on(async {
-/// println!("Hello, world!");
-/// })
-/// }
+/// task::block_on(async {
+/// println!("Hello, world!");
+/// })
/// ```
#[cfg(not(target_os = "unknown"))]
pub fn block_on(future: F) -> T