orx_concurrent_vec/common_traits/
from_iter.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use crate::ConcurrentVec;

impl<T> FromIterator<T> for ConcurrentVec<T> {
    fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> Self {
        let vec = ConcurrentVec::new();

        let iter = iter.into_iter();
        match iter.size_hint() {
            (a, Some(b)) if a == b => {
                vec.extend_n_items(iter, a);
            }
            _ => {
                for x in iter {
                    vec.push(x);
                }
            }
        }

        vec
    }
}