cel_cxx/values/impls/
opaque.rs

1use super::impl_into;
2use crate::values::*;
3
4impl_into!(
5    Opaque: Value {
6        OpaqueValue => |self| self,
7    }
8);
9
10impl FromValue for OpaqueValue {
11    type Output<'a> = OpaqueValue;
12
13    fn from_value<'a>(value: &'a Value) -> Result<Self::Output<'a>, FromValueError> {
14        match value {
15            Value::Opaque(v) => Ok(v.clone()),
16            _ => Err(FromValueError::new(value.clone(), "opaque")),
17        }
18    }
19}
20
21impl FromValue for &OpaqueValue {
22    type Output<'a> = &'a OpaqueValue;
23
24    fn from_value<'a>(value: &'a Value) -> Result<Self::Output<'a>, FromValueError> {
25        match value {
26            Value::Opaque(v) => Ok(v),
27            _ => Err(FromValueError::new(value.clone(), "opaque")),
28        }
29    }
30}