hive_console_sdk/expressions/values/
boolean.rs1use crate::expressions::FromVrlValue;
2use vrl::core::Value as VrlValue;
3
4#[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}