pub trait CheckedArithmetic<Op, Rhs = Self> {
type Output;
// Required method
fn checked_eval(self, rhs: Rhs) -> Option<Self::Output>;
}Expand description
Trait for checked arithmetic operations.
Required Associated Types§
Required Methods§
Sourcefn checked_eval(self, rhs: Rhs) -> Option<Self::Output>
fn checked_eval(self, rhs: Rhs) -> Option<Self::Output>
Perform the operation, returning None on overflow/underflow or division by zero.
See the Op marker detailed semantics on the checked behavior.
Implementations on Foreign Types§
Source§impl<Op> CheckedArithmetic<Op> for &PrimitiveScalarwhere
for<'a> &'a PScalar<i8>: CheckedArithmetic<Op, &'a PScalar<i8>, Output = PScalar<i8>>,
for<'a> &'a PScalar<i16>: CheckedArithmetic<Op, &'a PScalar<i16>, Output = PScalar<i16>>,
for<'a> &'a PScalar<i32>: CheckedArithmetic<Op, &'a PScalar<i32>, Output = PScalar<i32>>,
for<'a> &'a PScalar<i64>: CheckedArithmetic<Op, &'a PScalar<i64>, Output = PScalar<i64>>,
for<'a> &'a PScalar<u8>: CheckedArithmetic<Op, &'a PScalar<u8>, Output = PScalar<u8>>,
for<'a> &'a PScalar<u16>: CheckedArithmetic<Op, &'a PScalar<u16>, Output = PScalar<u16>>,
for<'a> &'a PScalar<u32>: CheckedArithmetic<Op, &'a PScalar<u32>, Output = PScalar<u32>>,
for<'a> &'a PScalar<u64>: CheckedArithmetic<Op, &'a PScalar<u64>, Output = PScalar<u64>>,
impl<Op> CheckedArithmetic<Op> for &PrimitiveScalarwhere
for<'a> &'a PScalar<i8>: CheckedArithmetic<Op, &'a PScalar<i8>, Output = PScalar<i8>>,
for<'a> &'a PScalar<i16>: CheckedArithmetic<Op, &'a PScalar<i16>, Output = PScalar<i16>>,
for<'a> &'a PScalar<i32>: CheckedArithmetic<Op, &'a PScalar<i32>, Output = PScalar<i32>>,
for<'a> &'a PScalar<i64>: CheckedArithmetic<Op, &'a PScalar<i64>, Output = PScalar<i64>>,
for<'a> &'a PScalar<u8>: CheckedArithmetic<Op, &'a PScalar<u8>, Output = PScalar<u8>>,
for<'a> &'a PScalar<u16>: CheckedArithmetic<Op, &'a PScalar<u16>, Output = PScalar<u16>>,
for<'a> &'a PScalar<u32>: CheckedArithmetic<Op, &'a PScalar<u32>, Output = PScalar<u32>>,
for<'a> &'a PScalar<u64>: CheckedArithmetic<Op, &'a PScalar<u64>, Output = PScalar<u64>>,
type Output = PrimitiveScalar
fn checked_eval(self, rhs: &PrimitiveScalar) -> Option<Self::Output>
Source§impl<Op> CheckedArithmetic<Op> for PrimitiveDatumwhere
for<'a> &'a PrimitiveScalar: CheckedArithmetic<Op, Output = PrimitiveScalar>,
for<'a> PrimitiveVector: CheckedArithmetic<Op, &'a PrimitiveVector, Output = PrimitiveVector>,
impl<Op> CheckedArithmetic<Op> for PrimitiveDatumwhere
for<'a> &'a PrimitiveScalar: CheckedArithmetic<Op, Output = PrimitiveScalar>,
for<'a> PrimitiveVector: CheckedArithmetic<Op, &'a PrimitiveVector, Output = PrimitiveVector>,
type Output = PrimitiveDatum
fn checked_eval(self, rhs: PrimitiveDatum) -> Option<Self::Output>
Source§impl<Op> CheckedArithmetic<Op, &PrimitiveVector> for PrimitiveVectorwhere
for<'a> PVector<i8>: CheckedArithmetic<Op, &'a PVector<i8>, Output = PVector<i8>>,
for<'a> PVector<i16>: CheckedArithmetic<Op, &'a PVector<i16>, Output = PVector<i16>>,
for<'a> PVector<i32>: CheckedArithmetic<Op, &'a PVector<i32>, Output = PVector<i32>>,
for<'a> PVector<i64>: CheckedArithmetic<Op, &'a PVector<i64>, Output = PVector<i64>>,
for<'a> PVector<u8>: CheckedArithmetic<Op, &'a PVector<u8>, Output = PVector<u8>>,
for<'a> PVector<u16>: CheckedArithmetic<Op, &'a PVector<u16>, Output = PVector<u16>>,
for<'a> PVector<u32>: CheckedArithmetic<Op, &'a PVector<u32>, Output = PVector<u32>>,
for<'a> PVector<u64>: CheckedArithmetic<Op, &'a PVector<u64>, Output = PVector<u64>>,
impl<Op> CheckedArithmetic<Op, &PrimitiveVector> for PrimitiveVectorwhere
for<'a> PVector<i8>: CheckedArithmetic<Op, &'a PVector<i8>, Output = PVector<i8>>,
for<'a> PVector<i16>: CheckedArithmetic<Op, &'a PVector<i16>, Output = PVector<i16>>,
for<'a> PVector<i32>: CheckedArithmetic<Op, &'a PVector<i32>, Output = PVector<i32>>,
for<'a> PVector<i64>: CheckedArithmetic<Op, &'a PVector<i64>, Output = PVector<i64>>,
for<'a> PVector<u8>: CheckedArithmetic<Op, &'a PVector<u8>, Output = PVector<u8>>,
for<'a> PVector<u16>: CheckedArithmetic<Op, &'a PVector<u16>, Output = PVector<u16>>,
for<'a> PVector<u32>: CheckedArithmetic<Op, &'a PVector<u32>, Output = PVector<u32>>,
for<'a> PVector<u64>: CheckedArithmetic<Op, &'a PVector<u64>, Output = PVector<u64>>,
type Output = PrimitiveVector
fn checked_eval(self, rhs: &PrimitiveVector) -> Option<Self::Output>
Source§impl<Op, T> CheckedArithmetic<Op> for &Buffer<T>
Implementation that allocates a new output buffer.
impl<Op, T> CheckedArithmetic<Op> for &Buffer<T>
Implementation that allocates a new output buffer.
Source§impl<Op, T> CheckedArithmetic<Op> for &PScalar<T>where
T: NativePType,
Op: CheckedOperator<T>,
impl<Op, T> CheckedArithmetic<Op> for &PScalar<T>where
T: NativePType,
Op: CheckedOperator<T>,
Source§impl<Op, T> CheckedArithmetic<Op, &Buffer<T>> for Buffer<T>where
T: Copy + Zero,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that attempts to downcast to a mutable buffer and operates in-place.
impl<Op, T> CheckedArithmetic<Op, &Buffer<T>> for Buffer<T>where
T: Copy + Zero,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that attempts to downcast to a mutable buffer and operates in-place.
Source§impl<Op, T> CheckedArithmetic<Op, &Buffer<T>> for BufferMut<T>
Implementation that operates in-place over a mutable buffer.
impl<Op, T> CheckedArithmetic<Op, &Buffer<T>> for BufferMut<T>
Implementation that operates in-place over a mutable buffer.
Source§impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for &PVector<T>where
T: NativePType,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that allocates a new output vector.
impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for &PVector<T>where
T: NativePType,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that allocates a new output vector.
Source§impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for PVector<T>where
T: NativePType,
PVectorMut<T>: for<'a> CheckedArithmetic<Op, &'a PVector<T>, Output = PVector<T>>,
for<'a> &'a PVector<T>: CheckedArithmetic<Op, &'a PVector<T>, Output = PVector<T>>,
Implementation that attempts to downcast to a mutable vector and operates in-place.
impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for PVector<T>where
T: NativePType,
PVectorMut<T>: for<'a> CheckedArithmetic<Op, &'a PVector<T>, Output = PVector<T>>,
for<'a> &'a PVector<T>: CheckedArithmetic<Op, &'a PVector<T>, Output = PVector<T>>,
Implementation that attempts to downcast to a mutable vector and operates in-place.
Source§impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for PVectorMut<T>where
T: NativePType,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that operates in-place over a mutable vector.
impl<Op, T> CheckedArithmetic<Op, &PVector<T>> for PVectorMut<T>where
T: NativePType,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a Buffer<T>, Output = Buffer<T>>,
Implementation that operates in-place over a mutable vector.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for &Buffer<T>
Implementation that allocates a new output buffer operating against a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for &Buffer<T>
Implementation that allocates a new output buffer operating against a scalar RHS value.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for &PVector<T>
Implementation that allocates a new output vector against a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for &PVector<T>
Implementation that allocates a new output vector against a scalar RHS value.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for Buffer<T>where
T: Copy + Zero,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a T, Output = Buffer<T>>,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a T, Output = Buffer<T>>,
Implementation that attempts to downcast to a mutable buffer and operates in-place against
a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for Buffer<T>where
T: Copy + Zero,
BufferMut<T>: for<'a> CheckedArithmetic<Op, &'a T, Output = Buffer<T>>,
for<'a> &'a Buffer<T>: CheckedArithmetic<Op, &'a T, Output = Buffer<T>>,
Implementation that attempts to downcast to a mutable buffer and operates in-place against a scalar RHS value.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for BufferMut<T>
Implementation that operates in-place over a mutable buffer against a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for BufferMut<T>
Implementation that operates in-place over a mutable buffer against a scalar RHS value.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for PVector<T>where
T: NativePType,
PVectorMut<T>: for<'a> CheckedArithmetic<Op, &'a T, Output = PVector<T>>,
for<'a> &'a PVector<T>: CheckedArithmetic<Op, &'a T, Output = PVector<T>>,
Implementation that attempts to downcast to a mutable vector and operates in-place against
a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for PVector<T>where
T: NativePType,
PVectorMut<T>: for<'a> CheckedArithmetic<Op, &'a T, Output = PVector<T>>,
for<'a> &'a PVector<T>: CheckedArithmetic<Op, &'a T, Output = PVector<T>>,
Implementation that attempts to downcast to a mutable vector and operates in-place against a scalar RHS value.
Source§impl<Op, T> CheckedArithmetic<Op, &T> for PVectorMut<T>
Implementation that operates in-place over a mutable vector against a scalar RHS value.
impl<Op, T> CheckedArithmetic<Op, &T> for PVectorMut<T>
Implementation that operates in-place over a mutable vector against a scalar RHS value.