rbatis_codegen/
ops_not.rs1use 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}