#[derive(Debug, Clone, PartialEq, Eq)]
pub struct IntVectorData {
pub ints: Vec<usize>,
}
impl IntVectorData {
pub fn from_slice<T: num_traits::ToPrimitive>(vals: &[T]) -> crate::error::Result<Self> {
let mut ints = Vec::with_capacity(vals.len());
for v in vals {
ints.push(
v.to_usize().ok_or_else(|| {
crate::error::Error::invalid_argument("vals must be castable")
})?,
);
}
Ok(Self { ints })
}
pub fn len(&self) -> usize {
self.ints.len()
}
}