rbatis_codegen/
ops_not.rs

1use crate::ops::Not;
2use rbs::Value;
3
4fn op_not(left: Value) -> Value {
5    use std::ops::Not;
6    match left {
7        Value::I32(b) => Value::I32(b.not()),
8        Value::I64(b) => Value::I64(b.not()),
9        Value::U32(b) => Value::U32(b.not()),
10        Value::U64(b) => Value::U64(b.not()),
11        Value::Bool(b) => Value::Bool(b.not()),
12        Value::Ext(_, e) => op_not(*e),
13        _ => Value::Null,
14    }
15}
16
17impl Not for Value {
18    type Output = Value;
19
20    fn op_not(self) -> Self::Output {
21        op_not(self)
22    }
23}
24
25impl Not for &Value {
26    type Output = Value;
27    fn op_not(self) -> Self::Output {
28        op_not(self.to_owned())
29    }
30}
31
32impl Not for &&Value {
33    type Output = Value;
34    fn op_not(self) -> Self::Output {
35        op_not((*self).to_owned())
36    }
37}
38
39impl Not for &mut Value {
40    type Output = Value;
41    fn op_not(self) -> Self::Output {
42        op_not(self.to_owned())
43    }
44}