在Rust中实现了Not trait就是实现!操作符。下面看一下定义:
trait Not {
type Output;
fn not(self) -> Self::Output;
}
下面就是实现的例子:
use std::ops::Not;
struct Any<T> {
flag: T,
}
impl<T, O> Not for Any<T>
where
T: Not<Output = O>,
{
type Output = Any<O>;
fn not(self) -> Self::Output {
Any { flag: !self.flag }
}
}
fn main() {
let a = Any { flag: false };
assert!((!a).flag);
}