orx_concurrent_vec/
to_vec.rs

1use crate::{ConcurrentVec, elem::ConcurrentElement};
2use alloc::vec::Vec;
3use orx_pinned_vec::IntoConcurrentPinnedVec;
4
5impl<T, P> ConcurrentVec<T, P>
6where
7    P: IntoConcurrentPinnedVec<ConcurrentElement<T>>,
8{
9    /// Transforms the concurrent vec into a regular vector.
10    pub fn to_vec(self) -> Vec<T> {
11        let pinned = self.into_inner();
12        let mut vec = Vec::with_capacity(pinned.len());
13        for x in pinned {
14            vec.push(x.0.expect("unwrapped none"));
15        }
16        vec
17    }
18
19    /// Without consuming the concurrent vector,
20    /// clones the values of its elements into a regular vector.
21    pub fn clone_to_vec(&self) -> Vec<T>
22    where
23        T: Clone,
24    {
25        self.as_slice().clone_to_vec()
26    }
27}