# Trait std::iter::TrustedLen [−] [src]

    pub unsafe trait TrustedLen: Iterator { }

🔬 This is a nightly-only experimental API. (`trusted_len` #37572)

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`.

The iterator must produce exactly the number of elements it reported.

# Safety

This trait must only be implemented when the contract is upheld. Consumers of this trait must inspect `.size_hint`’s upper bound.

## Implementors

- `impl TrustedLen for Range<u64>`
- `impl<I> TrustedLen for Enumerate<I> where
  I: TrustedLen,`
- `impl TrustedLen for RangeInclusive<u32>`
- `impl TrustedLen for RangeInclusive<isize>`
- `impl TrustedLen for Range<isize>`
- `impl<T> TrustedLen for Empty<T>`
- `impl TrustedLen for Range<i8>`
- `impl<A, B> TrustedLen for Chain<A, B> where
  A: TrustedLen,
  B: TrustedLen<Item = <A as Iterator>::Item>,`
- `impl TrustedLen for Range<u16>`
- `impl TrustedLen for RangeInclusive<i32>`
- `impl TrustedLen for Range<i32>`
- `impl<'a, I, T> TrustedLen for Cloned<I> where
  I: TrustedLen<Item = &'a T>,
  T: 'a + Clone,`
- `impl<'a, A> TrustedLen for std::result::Iter<'a, A>`
- `impl<A, B> TrustedLen for Zip<A, B> where
  A: TrustedLen,
  B: TrustedLen,`
- `impl TrustedLen for RangeInclusive<i16>`
- `impl TrustedLen for RangeInclusive<u64>`
- `impl TrustedLen for Range<i16>`
- `impl<'a, T> TrustedLen for std::slice::Iter<'a, T>`
- `impl TrustedLen for RangeInclusive<usize>`
- `impl<'a, T> TrustedLen for std::slice::IterMut<'a, T>`
- `impl TrustedLen for RangeInclusive<i64>`
- `impl TrustedLen for RangeInclusive<i8>`
- `impl<T> TrustedLen for Once<T>`
- `impl<'a, A> TrustedLen for std::result::IterMut<'a, A>`
- `impl TrustedLen for Range<u32>`
- `impl<'a, I> TrustedLen for &'a mut I where
  I: TrustedLen + ?Sized,`
- `impl<B, I, F> TrustedLen for Map<I, F> where
  F: FnMut(<I as Iterator>::Item) -> B,
  I: TrustedLen,`
- `impl<'a, A> TrustedLen for std::option::IterMut<'a, A>`
- `impl TrustedLen for Range<u8>`
- `impl TrustedLen for Range<i64>`
- `impl TrustedLen for RangeInclusive<u8>`
- `impl<'a, A> TrustedLen for std::option::Iter<'a, A>`
- `impl TrustedLen for RangeInclusive<u16>`
- `impl<I> TrustedLen for Rev<I> where
  I: TrustedLen + DoubleEndedIterator,`
- `impl<A> TrustedLen for std::result::IntoIter<A>`
- `impl<A> TrustedLen for std::option::IntoIter<A>`
- `impl TrustedLen for Range<usize>`
- `impl<T> TrustedLen for std::vec::IntoIter<T>`

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)