# Trait std::ops::Neg

1.0.0 · source ·

    pub trait Neg {
        type Output;

        // Required method
        fn neg(self) -> Self::Output;
    }

Expand description

The unary negation operator `-`.

## Examples

An implementation of `Neg` for `Sign`, which allows the use of `-` to negate its value.

    use std::ops::Neg;

    #[derive(Debug, PartialEq)]
    enum Sign {
        Negative,
        Zero,
        Positive,
    }

    impl Neg for Sign {
        type Output = Self;

        fn neg(self) -> Self::Output {
            match self {
                Sign::Negative => Sign::Positive,
                Sign::Zero => Sign::Zero,
                Sign::Positive => Sign::Negative,
            }
        }
    }

    // A negative positive is a negative.
    assert_eq!(-Sign::Positive, Sign::Negative);
    // A double negative is a positive.
    assert_eq!(-Sign::Negative, Sign::Positive);
    // Zero is its own negation.
    assert_eq!(-Sign::Zero, Sign::Zero);

Run

## Required Associated Types§

source

#### type Output

The resulting type after applying the `-` operator.

## Required Methods§

source

#### fn neg(self) -> Self::Output

Performs the unary `-` operation.

##### Example

    let x: i32 = 12;
    assert_eq!(-x, -12);

Run

## Implementors§

source§

### impl Neg for &f32

§

#### type Output = <f32 as Neg>::Output

source§

### impl Neg for &f64

§

#### type Output = <f64 as Neg>::Output

source§

### impl Neg for &i8

§

#### type Output = <i8 as Neg>::Output

source§

### impl Neg for &i16

§

#### type Output = <i16 as Neg>::Output

source§

### impl Neg for &i32

§

#### type Output = <i32 as Neg>::Output

source§

### impl Neg for &i64

§

#### type Output = <i64 as Neg>::Output

source§

### impl Neg for &i128

§

#### type Output = <i128 as Neg>::Output

source§

### impl Neg for &isize

§

#### type Output = <isize as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroI8

§

#### type Output = <NonZeroI8 as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroI16

§

#### type Output = <NonZeroI16 as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroI32

§

#### type Output = <NonZeroI32 as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroI64

§

#### type Output = <NonZeroI64 as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroI128

§

#### type Output = <NonZeroI128 as Neg>::Output

1.71.0 · source§

### impl Neg for &NonZeroIsize

§

#### type Output = <NonZeroIsize as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<i8>

§

#### type Output = <Saturating<i8> as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<i16>

§

#### type Output = <Saturating<i16> as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<i32>

§

#### type Output = <Saturating<i32> as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<i64>

§

#### type Output = <Saturating<i64> as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<i128>

§

#### type Output = <Saturating<i128> as Neg>::Output

1.74.0 · source§

### impl Neg for &Saturating<isize>

§

#### type Output = <Saturating<isize> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<i8>

§

#### type Output = <Wrapping<i8> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<i16>

§

#### type Output = <Wrapping<i16> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<i32>

§

#### type Output = <Wrapping<i32> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<i64>

§

#### type Output = <Wrapping<i64> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<i128>

§

#### type Output = <Wrapping<i128> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<isize>

§

#### type Output = <Wrapping<isize> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<u8>

§

#### type Output = <Wrapping<u8> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<u16>

§

#### type Output = <Wrapping<u16> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<u32>

§

#### type Output = <Wrapping<u32> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<u64>

§

#### type Output = <Wrapping<u64> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<u128>

§

#### type Output = <Wrapping<u128> as Neg>::Output

1.14.0 · source§

### impl Neg for &Wrapping<usize>

§

#### type Output = <Wrapping<usize> as Neg>::Output

source§

### impl Neg for f32

§

#### type Output = f32

source§

### impl Neg for f64

§

#### type Output = f64

source§

### impl Neg for i8

§

#### type Output = i8

source§

### impl Neg for i16

§

#### type Output = i16

source§

### impl Neg for i32

§

#### type Output = i32

source§

### impl Neg for i64

§

#### type Output = i64

source§

### impl Neg for i128

§

#### type Output = i128

source§

### impl Neg for isize

§

#### type Output = isize

1.71.0 · source§

### impl Neg for NonZeroI8

§

#### type Output = NonZeroI8

1.71.0 · source§

### impl Neg for NonZeroI16

§

#### type Output = NonZeroI16

1.71.0 · source§

### impl Neg for NonZeroI32

§

#### type Output = NonZeroI32

1.71.0 · source§

### impl Neg for NonZeroI64

§

#### type Output = NonZeroI64

1.71.0 · source§

### impl Neg for NonZeroI128

§

#### type Output = NonZeroI128

1.71.0 · source§

### impl Neg for NonZeroIsize

§

#### type Output = NonZeroIsize

1.74.0 · source§

### impl Neg for Saturating<i8>

§

#### type Output = Saturating<i8>

1.74.0 · source§

### impl Neg for Saturating<i16>

§

#### type Output = Saturating<i16>

1.74.0 · source§

### impl Neg for Saturating<i32>

§

#### type Output = Saturating<i32>

1.74.0 · source§

### impl Neg for Saturating<i64>

§

#### type Output = Saturating<i64>

1.74.0 · source§

### impl Neg for Saturating<i128>

§

#### type Output = Saturating<i128>

1.74.0 · source§

### impl Neg for Saturating<isize>

§

#### type Output = Saturating<isize>

1.10.0 · source§

### impl Neg for Wrapping<i8>

§

#### type Output = Wrapping<i8>

1.10.0 · source§

### impl Neg for Wrapping<i16>

§

#### type Output = Wrapping<i16>

1.10.0 · source§

### impl Neg for Wrapping<i32>

§

#### type Output = Wrapping<i32>

1.10.0 · source§

### impl Neg for Wrapping<i64>

§

#### type Output = Wrapping<i64>

1.10.0 · source§

### impl Neg for Wrapping<i128>

§

#### type Output = Wrapping<i128>

1.10.0 · source§

### impl Neg for Wrapping<isize>

§

#### type Output = Wrapping<isize>

1.10.0 · source§

### impl Neg for Wrapping<u8>

§

#### type Output = Wrapping<u8>

1.10.0 · source§

### impl Neg for Wrapping<u16>

§

#### type Output = Wrapping<u16>

1.10.0 · source§

### impl Neg for Wrapping<u32>

§

#### type Output = Wrapping<u32>

1.10.0 · source§

### impl Neg for Wrapping<u64>

§

#### type Output = Wrapping<u64>

1.10.0 · source§

### impl Neg for Wrapping<u128>

§

#### type Output = Wrapping<u128>

1.10.0 · source§

### impl Neg for Wrapping<usize>

§

#### type Output = Wrapping<usize>

source§

### impl<const LANES: usize> Neg for Simd<f32, LANES>where f32: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<f32, LANES>

source§

### impl<const LANES: usize> Neg for Simd<f64, LANES>where f64: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<f64, LANES>

source§

### impl<const LANES: usize> Neg for Simd<i8, LANES>where i8: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<i8, LANES>

source§

### impl<const LANES: usize> Neg for Simd<i16, LANES>where i16: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<i16, LANES>

source§

### impl<const LANES: usize> Neg for Simd<i32, LANES>where i32: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<i32, LANES>

source§

### impl<const LANES: usize> Neg for Simd<i64, LANES>where i64: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<i64, LANES>

source§

### impl<const LANES: usize> Neg for Simd<isize, LANES>where isize: SimdElement, LaneCount<LANES>: SupportedLaneCount,

§

#### type Output = Simd<isize, LANES>