Implement TrustedLen
for iter::Fuse<I: TrustedLen>
This commit is contained in:
parent
99893346e8
commit
12b605af88
@ -1,6 +1,8 @@
|
|||||||
use crate::intrinsics;
|
use crate::intrinsics;
|
||||||
use crate::iter::adapters::{zip::try_get_unchecked, InPlaceIterable, SourceIter};
|
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;
|
use crate::ops::Try;
|
||||||
|
|
||||||
/// An iterator that yields `None` forever after the underlying iterator
|
/// An iterator that yields `None` forever after the underlying iterator
|
||||||
@ -182,6 +184,12 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[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)]
|
#[doc(hidden)]
|
||||||
#[unstable(feature = "trusted_random_access", issue = "none")]
|
#[unstable(feature = "trusted_random_access", issue = "none")]
|
||||||
// SAFETY: `TrustedRandomAccess` requires that `size_hint()` must be exact and cheap to call, and
|
// SAFETY: `TrustedRandomAccess` requires that `size_hint()` must be exact and cheap to call, and
|
||||||
|
Loading…
x
Reference in New Issue
Block a user