cel-cxx 0.2.5

A high-performance, type-safe Rust interface for Common Expression Language (CEL), build on top of cel-cpp with zero-cost FFI bindings via cxx
Documentation
use super::impl_into;
use crate::values::*;

impl_into!(
    Opaque: Value {
        OpaqueValue => |self| self,
    }
);

impl FromValue for OpaqueValue {
    type Output<'a> = OpaqueValue;

    fn from_value<'a>(value: &'a Value) -> Result<Self::Output<'a>, FromValueError> {
        match value {
            Value::Opaque(v) => Ok(v.clone()),
            _ => Err(FromValueError::new(value.clone(), "opaque")),
        }
    }
}

impl FromValue for &OpaqueValue {
    type Output<'a> = &'a OpaqueValue;

    fn from_value<'a>(value: &'a Value) -> Result<Self::Output<'a>, FromValueError> {
        match value {
            Value::Opaque(v) => Ok(v),
            _ => Err(FromValueError::new(value.clone(), "opaque")),
        }
    }
}