pub trait Neg { type Output; fn neg(self) -> Self::Output; }
The Neg
trait is used to specify the functionality of unary -
.
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 = Sign; fn neg(self) -> Sign { 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);
type Output
The resulting type after applying the -
operator
impl Neg for std::num::Wrapping<usize>
impl Neg for std::num::Wrapping<u8>
impl Neg for std::num::Wrapping<u16>
impl Neg for std::num::Wrapping<u32>
impl Neg for std::num::Wrapping<u64>
impl Neg for std::num::Wrapping<isize>
impl Neg for std::num::Wrapping<i8>
impl Neg for std::num::Wrapping<i16>
impl Neg for std::num::Wrapping<i32>
impl Neg for std::num::Wrapping<i64>
impl<'a> Neg for &'a Wrapping<usize>
impl<'a> Neg for &'a Wrapping<u8>
impl<'a> Neg for &'a Wrapping<u16>
impl<'a> Neg for &'a Wrapping<u32>
impl<'a> Neg for &'a Wrapping<u64>
impl<'a> Neg for &'a Wrapping<isize>
impl<'a> Neg for &'a Wrapping<i8>
impl<'a> Neg for &'a Wrapping<i16>
impl<'a> Neg for &'a Wrapping<i32>
impl<'a> Neg for &'a Wrapping<i64>
impl Neg for std::num::Wrapping<u128>
impl Neg for std::num::Wrapping<i128>
impl<'a> Neg for &'a Wrapping<u128>
impl<'a> Neg for &'a Wrapping<i128>
impl Neg for isize
impl Neg for i8
impl Neg for i16
impl Neg for i32
impl Neg for i64
impl Neg for f32
impl Neg for f64
impl<'a> Neg for &'a isize
impl<'a> Neg for &'a i8
impl<'a> Neg for &'a i16
impl<'a> Neg for &'a i32
impl<'a> Neg for &'a i64
impl<'a> Neg for &'a f32
impl<'a> Neg for &'a f64
impl Neg for i128
impl<'a> Neg for &'a i128
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ops/trait.Neg.html