diff options
| author | Frank Steffahn <frank.steffahn@stu.uni-kiel.de> | 2021-06-01 02:21:26 +0200 |
|---|---|---|
| committer | Frank Steffahn <frank.steffahn@stu.uni-kiel.de> | 2021-07-21 14:37:23 +0200 |
| commit | 1b66a799c7ef707d2cd4b325b654e69bf536c30f (patch) | |
| tree | f5e24ee9a61aea5093946da3c1e1ccc9a2145ed1 /library/alloc | |
| parent | cf932aa584f2ba1a1744f3ef0b21f14387276fb6 (diff) | |
| download | rust-1b66a799c7ef707d2cd4b325b654e69bf536c30f.tar.gz rust-1b66a799c7ef707d2cd4b325b654e69bf536c30f.zip | |
Remove unsound TrustedRandomAccess implementations
Removes the implementations that depend on the user-definable trait `Copy`. Only fix regressions to ensure merge in 1.55: Does not modify `vec::IntoIter`.
Diffstat (limited to 'library/alloc')
| -rw-r--r-- | library/alloc/src/collections/vec_deque/into_iter.rs | 30 |
1 files changed, 1 insertions, 29 deletions
diff --git a/library/alloc/src/collections/vec_deque/into_iter.rs b/library/alloc/src/collections/vec_deque/into_iter.rs index 46a769a722a..612f7e6eb4d 100644 --- a/library/alloc/src/collections/vec_deque/into_iter.rs +++ b/library/alloc/src/collections/vec_deque/into_iter.rs @@ -1,5 +1,5 @@ use core::fmt; -use core::iter::{FusedIterator, TrustedLen, TrustedRandomAccess}; +use core::iter::{FusedIterator, TrustedLen}; use super::VecDeque; @@ -36,23 +36,6 @@ impl<T> Iterator for IntoIter<T> { let len = self.inner.len(); (len, Some(len)) } - - #[inline] - #[doc(hidden)] - 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")] @@ -75,14 +58,3 @@ impl<T> FusedIterator for IntoIter<T> {} #[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; -} |
