Skip to main content

hive_console_sdk/expressions/values/
boolean.rs

1use crate::expressions::FromVrlValue;
2use vrl::core::Value as VrlValue;
3
4/// Error type for Boolean conversion failures
5#[derive(Debug, thiserror::Error, Clone)]
6pub enum BooleanConversionError {
7    #[error("Cannot convert {type_name} to boolean")]
8    UnsupportedType { type_name: String },
9}
10
11impl FromVrlValue for bool {
12    type Error = BooleanConversionError;
13
14    #[inline]
15    fn from_vrl_value(value: VrlValue) -> Result<Self, Self::Error> {
16        match value {
17            VrlValue::Bytes(b) => Ok(b == "true"),
18            VrlValue::Integer(i) => Ok(i != 0),
19            VrlValue::Float(f) => Ok(f != 0.0),
20            VrlValue::Boolean(b) => Ok(b),
21            VrlValue::Null => Ok(false),
22            other => Err(BooleanConversionError::UnsupportedType {
23                type_name: other.kind().to_string(),
24            }),
25        }
26    }
27}