use super::{IntoIter, VecDeque}; /// Specialization trait used for `VecDeque::from_iter` pub(super) trait SpecFromIter { fn spec_from_iter(iter: I) -> Self; } impl SpecFromIter for VecDeque where I: Iterator, { default fn spec_from_iter(iterator: I) -> Self { // Since converting is O(1) now, just re-use the `Vec` logic for // anything where we can't do something extra-special for `VecDeque`, // especially as that could save us some monomorphiziation work // if one uses the same iterators (like slice ones) with both. crate::vec::Vec::from_iter(iterator).into() } } impl SpecFromIter> for VecDeque { #[inline] fn spec_from_iter(iterator: crate::vec::IntoIter) -> Self { iterator.into_vecdeque() } } impl SpecFromIter> for VecDeque { #[inline] fn spec_from_iter(iterator: IntoIter) -> Self { iterator.into_vecdeque() } }