Trait num_traits::ops::wrapping::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!

Object Safety§

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§