pub unsafe trait TrustedLen: Iterator { }
ð¬This is a nightly-only experimental API. (trusted_len
#37572) Expand description
An iterator that reports an accurate length using size_hint.
The iterator reports a size hint where it is either exact (lower bound is equal to upper bound), or the upper bound is None
. The upper bound must only be None
if the actual iterator length is larger than usize::MAX
. In that case, the lower bound must be usize::MAX
, resulting in an Iterator::size_hint()
of (usize::MAX, None)
.
The iterator must produce exactly the number of elements it reported or diverge before reaching the end.
§When shouldnât an adapter beTrustedLen
?
If an adapter makes an iterator shorter by a given amount, then itâs usually incorrect for that adapter to implement TrustedLen
. The inner iterator might return more than usize::MAX
items, but thereâs no way to know what k
elements less than that will be, since the size_hint
from the inner iterator has already saturated and lost that information.
This is why Skip<I>
isnât TrustedLen
, even when I
implements TrustedLen
.
This trait must only be implemented when the contract is upheld. Consumers of this trait must inspect Iterator::size_hint()
âs upper bound.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4