1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
use crate::{Doubling, Exponential, Linear, SplitVec};
// into SplitVec
impl<T> From<Vec<T>> for SplitVec<T, Linear> {
/// Converts a `Vec` into a `SplitVec` by
/// moving the vector into the split vector as the first fragment,
/// without copying the data.
///
/// # Examples
///
/// ```
/// use orx_split_vec::prelude::*;
///
/// let vec = vec!['a', 'b', 'c'];
/// let vec_capacity = vec.capacity();
///
/// let split_vec: SplitVec<_, Linear> = vec.into();
///
/// assert_eq!(split_vec, &['a', 'b', 'c']);
/// assert_eq!(1, split_vec.fragments().len());
/// assert_eq!(vec_capacity, split_vec.fragments()[0].capacity());
/// ```
fn from(value: Vec<T>) -> Self {
Self {
fragments: vec![value.into()],
growth: Linear,
}
}
}
impl<T> From<Vec<T>> for SplitVec<T, Doubling> {
/// Converts a `Vec` into a `SplitVec` by
/// moving the vector into the split vector as the first fragment,
/// without copying the data.
///
/// # Examples
///
/// ```
/// use orx_split_vec::prelude::*;
///
/// let vec = vec!['a', 'b', 'c'];
/// let vec_capacity = vec.capacity();
///
/// let split_vec: SplitVec<_, Doubling> = vec.into();
///
/// assert_eq!(split_vec, &['a', 'b', 'c']);
/// assert_eq!(1, split_vec.fragments().len());
/// assert_eq!(vec_capacity, split_vec.fragments()[0].capacity());
/// ```
fn from(value: Vec<T>) -> Self {
Self {
fragments: vec![value.into()],
growth: Doubling,
}
}
}
impl<T> From<Vec<T>> for SplitVec<T, Exponential> {
/// Converts a `Vec` into a `SplitVec` by
/// moving the vector into the split vector as the first fragment,
/// without copying the data.
///
/// # Examples
///
/// ```
/// use orx_split_vec::prelude::*;
///
/// let vec = vec!['a', 'b', 'c'];
/// let vec_capacity = vec.capacity();
///
/// let split_vec: SplitVec<_, Exponential> = vec.into();
///
/// assert_eq!(split_vec, &['a', 'b', 'c']);
/// assert_eq!(1, split_vec.fragments().len());
/// assert_eq!(vec_capacity, split_vec.fragments()[0].capacity());
/// ```
fn from(value: Vec<T>) -> Self {
Self {
fragments: vec![value.into()],
growth: Exponential::default(),
}
}
}
// from SplitVec