use std::ops::{Add, AddAssign, DivAssign, Mul, Sub};
pub trait BixverseNumeric:
Clone
+ Default
+ Copy
+ Sync
+ Send
+ Add<Output = Self>
+ Mul<Output = Self>
+ Sub<Output = Self>
+ AddAssign
+ PartialEq
+ Sub
+ DivAssign
{
}
impl<T> BixverseNumeric for T where
T: Clone
+ Default
+ Copy
+ Sync
+ Send
+ Add<Output = Self>
+ Mul<Output = Self>
+ Sub<Output = Self>
+ AddAssign
+ PartialEq
+ Sub
+ DivAssign
{
}
pub trait VecIndexCast<U> {
fn index_cast(self) -> Vec<U>;
}
impl VecIndexCast<u32> for Vec<usize> {
fn index_cast(self) -> Vec<u32> {
self.into_iter().map(|x| x as u32).collect()
}
}
impl VecIndexCast<u32> for &[usize] {
fn index_cast(self) -> Vec<u32> {
self.iter().map(|&x| x as u32).collect()
}
}
impl VecIndexCast<usize> for Vec<u32> {
fn index_cast(self) -> Vec<usize> {
self.into_iter().map(|x| x as usize).collect()
}
}
impl VecIndexCast<usize> for &[u32] {
fn index_cast(self) -> Vec<usize> {
self.iter().map(|&x| x as usize).collect()
}
}