pub trait Not { type Output; fn not(self) -> Self::Output; }
The Not
trait is used to specify the functionality of unary !
.
An implementation of Not
for Answer
, which enables the use of !
to invert its value.
use std::ops::Not; #[derive(Debug, PartialEq)] enum Answer { Yes, No, } impl Not for Answer { type Output = Answer; fn not(self) -> Answer { match self { Answer::Yes => Answer::No, Answer::No => Answer::Yes } } } assert_eq!(!Answer::Yes, Answer::No); assert_eq!(!Answer::No, Answer::Yes);
type Output
The resulting type after applying the !
operator
impl Not for std::num::Wrapping<usize>
impl Not for std::num::Wrapping<u8>
impl Not for std::num::Wrapping<u16>
impl Not for std::num::Wrapping<u32>
impl Not for std::num::Wrapping<u64>
impl Not for std::num::Wrapping<isize>
impl Not for std::num::Wrapping<i8>
impl Not for std::num::Wrapping<i16>
impl Not for std::num::Wrapping<i32>
impl Not for std::num::Wrapping<i64>
impl<'a> Not for &'a Wrapping<usize>
impl<'a> Not for &'a Wrapping<u8>
impl<'a> Not for &'a Wrapping<u16>
impl<'a> Not for &'a Wrapping<u32>
impl<'a> Not for &'a Wrapping<u64>
impl<'a> Not for &'a Wrapping<isize>
impl<'a> Not for &'a Wrapping<i8>
impl<'a> Not for &'a Wrapping<i16>
impl<'a> Not for &'a Wrapping<i32>
impl<'a> Not for &'a Wrapping<i64>
impl Not for std::num::Wrapping<u128>
impl Not for std::num::Wrapping<i128>
impl<'a> Not for &'a Wrapping<u128>
impl<'a> Not for &'a Wrapping<i128>
impl Not for bool
impl Not for usize
impl Not for u8
impl Not for u16
impl Not for u32
impl Not for u64
impl Not for isize
impl Not for i8
impl Not for i16
impl Not for i32
impl Not for i64
impl<'a> Not for &'a bool
impl<'a> Not for &'a usize
impl<'a> Not for &'a u8
impl<'a> Not for &'a u16
impl<'a> Not for &'a u32
impl<'a> Not for &'a u64
impl<'a> Not for &'a isize
impl<'a> Not for &'a i8
impl<'a> Not for &'a i16
impl<'a> Not for &'a i32
impl<'a> Not for &'a i64
impl Not for u128
impl Not for i128
impl<'a> Not for &'a u128
impl<'a> Not 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.Not.html