use crate::num::basic::unsigneds::PrimitiveUnsigned;
use crate::unsigned_vector::UnsignedVector;
use crate::vector::{
SelectCoordinates, SelectCoordinatesAssign, select_elements, select_elements_in_place,
};
impl<T: PrimitiveUnsigned> SelectCoordinates for UnsignedVector<T> {
type Output = Self;
#[inline]
fn select_coordinates(mut self, indices: &[u64]) -> Self {
self.select_coordinates_assign(indices);
self
}
}
impl<T: PrimitiveUnsigned> SelectCoordinates for &UnsignedVector<T> {
type Output = UnsignedVector<T>;
#[inline]
fn select_coordinates(self, indices: &[u64]) -> UnsignedVector<T> {
UnsignedVector {
elements: select_elements(&self.elements, indices),
}
}
}
impl<T: PrimitiveUnsigned> SelectCoordinatesAssign for UnsignedVector<T> {
#[inline]
fn select_coordinates_assign(&mut self, indices: &[u64]) {
select_elements_in_place(&mut self.elements, indices);
}
}