Rust笔记 - Not trait

214 阅读1分钟

在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);
}