|  | 
| 16 | 16 | //! `FromIterator` implementation benefit from this too. | 
| 17 | 17 | //! | 
| 18 | 18 | //! Access to the underlying source goes through a further layer of indirection via the private | 
| 19 |  | -//! trait [`AsIntoIter`] to hide the implementation detail that other collections may use | 
|  | 19 | +//! trait [`AsVecIntoIter`] to hide the implementation detail that other collections may use | 
| 20 | 20 | //! `vec::IntoIter` internally. | 
| 21 | 21 | //! | 
| 22 | 22 | //! In-place iteration depends on the interaction of several unsafe traits, implementation | 
| @@ -142,16 +142,16 @@ impl<T> InPlaceIterableMarker for T where T: InPlaceIterable {} | 
| 142 | 142 | 
 | 
| 143 | 143 | impl<T, I> SpecFromIter<T, I> for Vec<T> | 
| 144 | 144 | where | 
| 145 |  | -    I: Iterator<Item = T> + SourceIter<Source: AsIntoIter> + InPlaceIterableMarker, | 
|  | 145 | +    I: Iterator<Item = T> + SourceIter<Source: AsVecIntoIter> + InPlaceIterableMarker, | 
| 146 | 146 | { | 
| 147 | 147 |     default fn from_iter(mut iterator: I) -> Self { | 
| 148 | 148 |         // See "Layout constraints" section in the module documentation. We rely on const | 
| 149 | 149 |         // optimization here since these conditions currently cannot be expressed as trait bounds | 
| 150 | 150 |         if mem::size_of::<T>() == 0 | 
| 151 | 151 |             || mem::size_of::<T>() | 
| 152 |  | -                != mem::size_of::<<<I as SourceIter>::Source as AsIntoIter>::Item>() | 
|  | 152 | +                != mem::size_of::<<<I as SourceIter>::Source as AsVecIntoIter>::Item>() | 
| 153 | 153 |             || mem::align_of::<T>() | 
| 154 |  | -                != mem::align_of::<<<I as SourceIter>::Source as AsIntoIter>::Item>() | 
|  | 154 | +                != mem::align_of::<<<I as SourceIter>::Source as AsVecIntoIter>::Item>() | 
| 155 | 155 |         { | 
| 156 | 156 |             // fallback to more generic implementations | 
| 157 | 157 |             return SpecFromIterNested::from_iter(iterator); | 
| @@ -289,7 +289,7 @@ where | 
| 289 | 289 | /// In-place iteration relies on implementation details of `vec::IntoIter`, most importantly that | 
| 290 | 290 | /// it does not create references to the whole allocation during iteration, only raw pointers | 
| 291 | 291 | #[rustc_specialization_trait] | 
| 292 |  | -pub(crate) unsafe trait AsIntoIter { | 
|  | 292 | +pub(crate) unsafe trait AsVecIntoIter { | 
| 293 | 293 |     type Item; | 
| 294 | 294 |     fn as_into_iter(&mut self) -> &mut super::IntoIter<Self::Item>; | 
| 295 | 295 | } | 
0 commit comments