makepad_vector/internal_iter/
from_internal_iterator.rs

1use crate::internal_iter::{ExtendFromInternalIterator, IntoInternalIterator};
2
3/// A trait for conversion from an internal iterator.
4///
5/// This trait is commonly implemented for collections. It is useful when you have an internal
6/// iterator but you need a collection.
7pub trait FromInternalIterator<T> {
8    /// Creates `Self` from an internal iterator.
9    ///
10    /// Note that `from_internal_iter` is almost never used directly. Instead, it is used by
11    /// calling the `collect` method on `InternalIterator`.
12    fn from_internal_iter<I>(internal_iter: I) -> Self
13    where
14        I: IntoInternalIterator<Item = T>;
15}
16
17impl<T> FromInternalIterator<T> for Vec<T> {
18    fn from_internal_iter<I>(internal_iter: I) -> Self
19    where
20        I: IntoInternalIterator<Item = T>,
21    {
22        let mut vec = Vec::new();
23        vec.extend_from_internal_iter(internal_iter);
24        vec
25    }
26}