use core::fmt;
-use core::iter::{FusedIterator, TrustedLen, TrustedRandomAccess};
+use core::iter::{FusedIterator, TrustedLen};
use super::VecDeque;
let len = self.inner.len();
(len, Some(len))
}
-
- #[inline]
- unsafe fn __iterator_get_unchecked(&mut self, idx: usize) -> Self::Item
- where
- Self: TrustedRandomAccess,
- {
- // Safety: The TrustedRandomAccess contract requires that callers only pass an index
- // that is in bounds.
- // Additionally Self: TrustedRandomAccess is only implemented for T: Copy which means even
- // multiple repeated reads of the same index would be safe and the
- // values are !Drop, thus won't suffer from double drops.
- unsafe {
- let idx = self.inner.wrap_add(self.inner.tail, idx);
- self.inner.buffer_read(idx)
- }
- }
}
#[stable(feature = "rust1", since = "1.0.0")]
#[unstable(feature = "trusted_len", issue = "37572")]
unsafe impl<T> TrustedLen for IntoIter<T> {}
-
-#[doc(hidden)]
-#[unstable(feature = "trusted_random_access", issue = "none")]
-// T: Copy as approximation for !Drop since get_unchecked does not update the pointers
-// and thus we can't implement drop-handling
-unsafe impl<T> TrustedRandomAccess for IntoIter<T>
-where
- T: Copy,
-{
- const MAY_HAVE_SIDE_EFFECT: bool = false;
-}