num_traits::ops::wrapping

Trait WrappingNeg

Source
pub trait WrappingNeg: Sized {
    // Required method
    fn wrapping_neg(&self) -> Self;
}
Expand description

Performs a negation that does not panic.

Required Methods§

Source

fn wrapping_neg(&self) -> Self

Wrapping (modular) negation. Computes -self, wrapping around at the boundary of the type.

Since unsigned types do not have negative equivalents all applications of this function will wrap (except for -0). For values smaller than the corresponding signed type’s maximum the result is the same as casting the corresponding signed value. Any larger values are equivalent to MAX + 1 - (val - MAX - 1) where MAX is the corresponding signed type’s maximum.

use num_traits::WrappingNeg;

assert_eq!(100i8.wrapping_neg(), -100);
assert_eq!((-100i8).wrapping_neg(), 100);
assert_eq!((-128i8).wrapping_neg(), -128); // wrapped!

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl WrappingNeg for i8

Source§

fn wrapping_neg(&self) -> i8

Source§

impl WrappingNeg for i16

Source§

fn wrapping_neg(&self) -> i16

Source§

impl WrappingNeg for i32

Source§

fn wrapping_neg(&self) -> i32

Source§

impl WrappingNeg for i64

Source§

fn wrapping_neg(&self) -> i64

Source§

impl WrappingNeg for i128

Source§

fn wrapping_neg(&self) -> i128

Source§

impl WrappingNeg for isize

Source§

fn wrapping_neg(&self) -> isize

Source§

impl WrappingNeg for u8

Source§

fn wrapping_neg(&self) -> u8

Source§

impl WrappingNeg for u16

Source§

fn wrapping_neg(&self) -> u16

Source§

impl WrappingNeg for u32

Source§

fn wrapping_neg(&self) -> u32

Source§

impl WrappingNeg for u64

Source§

fn wrapping_neg(&self) -> u64

Source§

impl WrappingNeg for u128

Source§

fn wrapping_neg(&self) -> u128

Source§

impl WrappingNeg for usize

Source§

fn wrapping_neg(&self) -> usize

Source§

impl<T: WrappingNeg> WrappingNeg for Wrapping<T>
where Wrapping<T>: Neg<Output = Wrapping<T>>,

Source§

fn wrapping_neg(&self) -> Self

Implementors§