Rollup merge of #81599 - sdroege:fuse-trusted-len, r=m-ou-se
Implement `TrustedLen` for `Fuse<I: TrustedLen>` This looks like it was simply forgotten.
This commit is contained in:
commit
86d0e6d257
@ -1,6 +1,8 @@
|
||||
use crate::intrinsics;
|
||||
use crate::iter::adapters::{zip::try_get_unchecked, InPlaceIterable, SourceIter};
|
||||
use crate::iter::{DoubleEndedIterator, ExactSizeIterator, FusedIterator, TrustedRandomAccess};
|
||||
use crate::iter::{
|
||||
DoubleEndedIterator, ExactSizeIterator, FusedIterator, TrustedLen, TrustedRandomAccess,
|
||||
};
|
||||
use crate::ops::Try;
|
||||
|
||||
/// An iterator that yields `None` forever after the underlying iterator
|
||||
@ -182,8 +184,19 @@ fn is_empty(&self) -> bool {
|
||||
}
|
||||
}
|
||||
|
||||
#[unstable(feature = "trusted_len", issue = "37572")]
|
||||
// SAFETY: `TrustedLen` requires that an accurate length is reported via `size_hint()`. As `Fuse`
|
||||
// is just forwarding this to the wrapped iterator `I` this property is preserved and it is safe to
|
||||
// implement `TrustedLen` here.
|
||||
unsafe impl<I> TrustedLen for Fuse<I> where I: TrustedLen {}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[unstable(feature = "trusted_random_access", issue = "none")]
|
||||
// SAFETY: `TrustedRandomAccess` requires that `size_hint()` must be exact and cheap to call, and
|
||||
// `Iterator::__iterator_get_unchecked()` must be implemented accordingly.
|
||||
//
|
||||
// This is safe to implement as `Fuse` is just forwarding these to the wrapped iterator `I`, which
|
||||
// preserves these properties.
|
||||
unsafe impl<I> TrustedRandomAccess for Fuse<I>
|
||||
where
|
||||
I: TrustedRandomAccess,
|
||||
|
Loading…
Reference in New Issue
Block a user