1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// Cardinality predicates.
//
// Spliced into the `FluentIter` trait by `build.rs`. Names resolve in
// the crate-root scope of `lib.rs`, exactly as before the split.
/// ⇔ `.hasExactly(n)`: exactly `n` items — and no more. Short-circuits
/// after `n + 1` items.
///
/// ```
/// use fluent_iterable::FluentIter;
///
/// assert!([1, 2].into_iter().has_exactly(2));
/// assert!(![1, 2, 3].into_iter().has_exactly(2));
/// ```
/// ⇔ `.hasLessThan(n)`: strictly fewer than `n` items. Short-circuits
/// after `n + 1`.
///
/// ```
/// use fluent_iterable::FluentIter;
///
/// assert!([1].into_iter().has_less_than(2));
/// assert!(![1, 2].into_iter().has_less_than(2));
/// ```
/// ⇔ `.hasLessOrExactly(n)`: at most `n` items. Short-circuits after
/// `n + 1`.
///
/// ```
/// use fluent_iterable::FluentIter;
///
/// assert!([1, 2].into_iter().has_less_or_exactly(2));
/// assert!(![1, 2, 3].into_iter().has_less_or_exactly(2));
/// ```
/// ⇔ `.hasMoreThan(n)`: strictly more than `n` items. Short-circuits
/// after `n + 1`.
///
/// ```
/// use fluent_iterable::FluentIter;
///
/// assert!([1, 2, 3].into_iter().has_more_than(2));
/// assert!(![1, 2].into_iter().has_more_than(2));
/// ```
/// ⇔ `.hasMoreOrExactly(n)`: at least `n` items. Short-circuits after
/// `n` — it cannot tell you *how many* more.
///
/// ```
/// use fluent_iterable::FluentIter;
///
/// assert!([1, 2].into_iter().has_more_or_exactly(2));
/// assert!(![1].into_iter().has_more_or_exactly(2));
/// ```