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}