Skip to main content

rbatis_codegen/
ops_neg.rs

1use 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}