rbatis_codegen/
ops_neg.rs1use crate::ops::Neg;
2use crate::ops_macros::impl_value_unary_op;
3use rbs::Value;
4
5fn op_neg(left: Value) -> Value {
6 match left {
7 Value::I32(value) => Value::I32(-value),
8 Value::I64(value) => Value::I64(-value),
9 Value::F32(value) => Value::F32(-value),
10 Value::F64(value) => Value::F64(-value),
11 Value::Ext(_, value) => op_neg(*value),
12 _ => Value::Null,
13 }
14}
15
16impl_value_unary_op!(Neg, neg, op_neg);
17
18#[cfg(test)]
19mod test {
20 use crate::ops::Neg;
21 use rbs::Value;
22
23 #[test]
24 fn test_neg() {
25 assert_eq!(Value::I32(2).neg(), Value::I32(-2));
26 assert_eq!((&Value::F64(1.5)).neg(), Value::F64(-1.5));
27 assert_eq!((&&Value::I64(3)).neg(), Value::I64(-3));
28 }
29}