rbatis-codegen 4.9.4

The Rust SQL Toolkit and ORM Library. An async, pure Rust SQL crate featuring compile-time Dynamic SQL gen system
Documentation
use crate::ops::Not;
use crate::ops_macros::impl_value_unary_op;
use rbs::Value;

fn op_not(left: Value) -> Value {
    match left {
        Value::I32(value) => Value::I32(!value),
        Value::I64(value) => Value::I64(!value),
        Value::U32(value) => Value::U32(!value),
        Value::U64(value) => Value::U64(!value),
        Value::Bool(value) => Value::Bool(!value),
        Value::Ext(_, value) => op_not(*value),
        _ => Value::Null,
    }
}

impl_value_unary_op!(Not, op_not, op_not);

#[cfg(test)]
mod test {
    use crate::ops::Not;
    use rbs::Value;

    #[test]
    fn test_not() {
        assert_eq!(Value::Bool(true).op_not(), Value::Bool(false));
        assert_eq!((&Value::I64(0)).op_not(), Value::I64(-1));
        assert_eq!((&&Value::U32(0)).op_not(), Value::U32(u32::MAX));
    }
}