use crate::{ConcurrentPinnedVec, PinnedVec};
/// A pinned vector which can be wrapped into a concurrent pinned vector.
pub trait IntoConcurrentPinnedVec<T>: PinnedVec<T> {
/// Type of the concurrent pinned vector wrapper.
type ConPinnedVec: ConcurrentPinnedVec<T, P = Self>;
/// Converts the pinned vector into its concurrent wrapper.
fn into_concurrent(self) -> Self::ConPinnedVec;
/// Converts the pinned vector into its concurrent wrapper.
/// During conversion:
///
/// * length of the vector is increased to its capacity;
/// * the elements in the range `len..capacity` are filled with the values
/// obtained by repeatedly calling the function `fill_with`.
fn into_concurrent_filled_with<F>(self, fill_with: F) -> Self::ConPinnedVec
where
F: Fn() -> T;
}