版本:1.91.0
对于一个对象 Foo,为它实现 Not 特质后,!Foo 会被指向 not 方法,返回一个类型为 Output 的数据对象。
use std::ops::Not;
#[derive(Copy, Clone)]
struct Foo;
impl Not for Foo {
type Output = Foo;
fn not(self) -> Foo {
println!("Not-ing!");
self
}
}
fn main() {
let _ = !Foo;
}
这形如绝大多数编程语言中的取反运算,形如 !a。
在最早期的版本,也就是 1.0.0,Not 特质只是实现在了若干整数类型以及以它们为泛型的各个 Wrapping<T>。现在的版本对 Not 的实现比之前多得多,但都是针对各种各样的整数类型。