Skip to content

Commit a0bc917

Browse files
committed
beautify doc
1 parent 356e526 commit a0bc917

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

src/gen_iter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use core::iter::Iterator;
33
use core::marker::Unpin;
44
use core::pin::Pin;
55

6-
/// a iterator that holds an internal generator representing
6+
/// an iterator that holds an internal generator representing
77
/// the iteration state
88
#[derive(Copy, Clone, Debug)]
99
pub struct GenIter<T>(pub T)

src/gen_iter_return.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ use core::iter::{Iterator, FusedIterator};
33
use core::marker::Unpin;
44
use core::pin::Pin;
55

6-
/// `GenIterReturn<G>` is a iterator for generator with return value.
6+
/// `GenIterReturn<G>` holds a generator `G` or the return value of `G`,
7+
/// `&mut GenIterReturn<G>` acts as an iterator.
78
///
89
/// Differences with `GenIter<G>`:
910
/// 1. able to get return value of a generator
@@ -35,11 +36,12 @@ impl<G: Generator + Unpin> GenIterReturn<G> {
3536
/// Force use `&mut g` as iterator to prevent the code below,
3637
/// in which return value cannot be got.
3738
/// ```compile_fail
39+
/// // !!INVALID CODE!!
3840
/// # #![feature(generators)]
3941
/// # use gen_iter::gen_iter_return;
40-
/// let mut g = gen_iter_return!({ yield 1; return "done"; }
42+
/// let mut g = gen_iter_return!({ yield 1; return "done"; });
4143
/// for v in g {} // invalid, because `GenIterReturn<G>` is not `Iterator`
42-
/// let ret = g.return_or_self().unwrap(); // g is dropped after for
44+
/// let ret = g.return_or_self(); // g is dropped after for loop
4345
/// ```
4446
impl<G: Generator + Unpin> Iterator for &mut GenIterReturn<G> {
4547
type Item = G::Yield;

src/lib.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
//! # gen_iter - create generators to use as iterators
22
//!
3-
//! `GenIter` converts a generator into an iterator over the
3+
//! ## [`GenIter`] and [`gen_iter!`]
4+
//! [`GenIter`] converts a [`Generator<(), Return=()>`](core::ops::Generator) into an iterator over the
45
//! yielded type of the generator. The return type of the generator needs to be `()`.
6+
//!
7+
//! [`gen_iter!`] helps to create a [`GenIter`]
58
//!
69
//! ```
710
//! #![feature(generators)]
8-
//! #![feature(conservative_impl_trait)]
911
//!
1012
//! use gen_iter::gen_iter;
1113
//!
@@ -29,9 +31,12 @@
2931
//! }
3032
//! ```
3133
//!
32-
//! `GenIterReturn` can be converted from a `Generator<()>`,
33-
//! `&mut GenIterReturn` can be used as iterator.
34-
//! The return value of the generator can be got after the iterator is done.
34+
//! ## [`GenIterReturn`] and [`gen_iter_return!`]
35+
//! [`GenIterReturn`] can be converted from a [`Generator<()>`](core::ops::Generator),
36+
//! `&mut GenIterReturn<G>` can be used as iterator.
37+
//! The return value of the generator can be got after the iterator is exhausted.
38+
//!
39+
//! [`gen_iter_return!`] helps to create a [`GenIterReturn`].
3540
//!
3641
//! ```
3742
//! #![feature(generators)]

0 commit comments

Comments
 (0)