Skip to content

Commit a269b0f

Browse files
committed
Add doc-tests to all sources
1 parent b4c446d commit a269b0f

File tree

1 file changed

+82
-0
lines changed

1 file changed

+82
-0
lines changed

src/sources.rs

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ where
2424
}
2525

2626
/// Turns an iterator of references into a streaming iterator.
27+
///
28+
/// ```
29+
/// # use streaming_iterator::{StreamingIterator, convert_ref};
30+
/// let scores = vec![100, 50, 80];
31+
/// let mut streaming_iter = convert_ref(&scores);
32+
/// while let Some(score) = streaming_iter.next() {
33+
/// println!("The score is: {}", score);
34+
/// }
35+
/// ```
2736
#[inline]
2837
pub fn convert_ref<'a, I, T: ?Sized>(iterator: I) -> ConvertRef<'a, I::IntoIter, T>
2938
where
@@ -36,6 +45,12 @@ where
3645
}
3746

3847
/// Creates an empty iterator.
48+
///
49+
/// ```
50+
/// # use streaming_iterator::StreamingIterator;
51+
/// let mut streaming_iter = streaming_iterator::empty::<i32>();
52+
/// assert_eq!(streaming_iter.next(), None);
53+
/// ```
3954
#[inline]
4055
pub fn empty<T>() -> Empty<T> {
4156
Empty {
@@ -44,12 +59,32 @@ pub fn empty<T>() -> Empty<T> {
4459
}
4560

4661
/// Creates an iterator that returns items from a function call.
62+
///
63+
/// ```
64+
/// # use streaming_iterator::StreamingIterator;
65+
/// let mut count = 0;
66+
/// let mut streaming_iter = streaming_iterator::from_fn(|| {
67+
/// count += 1;
68+
/// if count < 4 { Some(count) } else { None }
69+
/// });
70+
/// assert_eq!(streaming_iter.next(), Some(&1));
71+
/// assert_eq!(streaming_iter.next(), Some(&2));
72+
/// assert_eq!(streaming_iter.next(), Some(&3));
73+
/// assert_eq!(streaming_iter.next(), None);
74+
/// ```
4775
#[inline]
4876
pub fn from_fn<T, F: FnMut() -> Option<T>>(gen: F) -> FromFn<T, F> {
4977
FromFn { gen, item: None }
5078
}
5179

5280
/// Creates an iterator that returns exactly one item.
81+
///
82+
/// ```
83+
/// # use streaming_iterator::StreamingIterator;
84+
/// let mut streaming_iter = streaming_iterator::once(1);
85+
/// assert_eq!(streaming_iter.next(), Some(&1));
86+
/// assert_eq!(streaming_iter.next(), None);
87+
/// ```
5388
#[inline]
5489
pub fn once<T>(item: T) -> Once<T> {
5590
Once {
@@ -59,6 +94,15 @@ pub fn once<T>(item: T) -> Once<T> {
5994
}
6095

6196
/// Creates an iterator that returns exactly one item from a function call.
97+
///
98+
/// ```
99+
/// # use streaming_iterator::StreamingIterator;
100+
/// #[derive(Debug, PartialEq)]
101+
/// struct Expensive(i32);
102+
/// let mut streaming_iter = streaming_iterator::once_with(|| Expensive(1));
103+
/// assert_eq!(streaming_iter.next(), Some(&Expensive(1)));
104+
/// assert_eq!(streaming_iter.next(), None);
105+
/// ```
62106
#[inline]
63107
pub fn once_with<T, F: FnOnce() -> T>(gen: F) -> OnceWith<T, F> {
64108
OnceWith {
@@ -68,18 +112,56 @@ pub fn once_with<T, F: FnOnce() -> T>(gen: F) -> OnceWith<T, F> {
68112
}
69113

70114
/// Creates an iterator that returns an item endlessly.
115+
///
116+
/// ```
117+
/// # use streaming_iterator::StreamingIterator;
118+
/// let mut streaming_iter = streaming_iterator::repeat(1);
119+
/// assert_eq!(streaming_iter.next(), Some(&1));
120+
/// assert_eq!(streaming_iter.next(), Some(&1));
121+
/// assert_eq!(streaming_iter.next(), Some(&1));
122+
/// assert_eq!(streaming_iter.next(), Some(&1));
123+
/// assert_eq!(streaming_iter.next(), Some(&1));
124+
/// // ...
125+
/// ```
71126
#[inline]
72127
pub fn repeat<T>(item: T) -> Repeat<T> {
73128
Repeat { item }
74129
}
75130

76131
/// Creates an iterator that endlessly returns items from a function call.
132+
///
133+
/// ```
134+
/// # use streaming_iterator::StreamingIterator;
135+
/// let mut count = 0;
136+
/// let mut streaming_iter = streaming_iterator::repeat_with(|| {
137+
/// count += 1;
138+
/// count
139+
/// });
140+
/// assert_eq!(streaming_iter.next(), Some(&1));
141+
/// assert_eq!(streaming_iter.next(), Some(&2));
142+
/// assert_eq!(streaming_iter.next(), Some(&3));
143+
/// assert_eq!(streaming_iter.next(), Some(&4));
144+
/// assert_eq!(streaming_iter.next(), Some(&5));
145+
/// // ...
146+
/// ```
77147
#[inline]
78148
pub fn repeat_with<T, F: FnMut() -> T>(gen: F) -> RepeatWith<T, F> {
79149
RepeatWith { gen, item: None }
80150
}
81151

82152
/// Creates an iterator where each successive item is computed from the preceding one.
153+
///
154+
/// ```
155+
/// # use streaming_iterator::StreamingIterator;
156+
/// let mut streaming_iter = streaming_iterator::successors(
157+
/// Some(1),
158+
/// |count| if count < 3 { Some(count + 1) } else { None },
159+
/// );
160+
/// assert_eq!(streaming_iter.next(), Some(&1));
161+
/// assert_eq!(streaming_iter.next(), Some(&2));
162+
/// assert_eq!(streaming_iter.next(), Some(&3));
163+
/// assert_eq!(streaming_iter.next(), None);
164+
/// ```
83165
#[inline]
84166
pub fn successors<T, F: FnMut(T) -> Option<T>>(first: Option<T>, succ: F) -> Successors<T, F> {
85167
Successors {

0 commit comments

Comments
 (0)