20 lines
437 B
Rust
20 lines
437 B
Rust
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(untagged)]
|
|
pub enum BooleanLike {
|
|
Boolean(bool),
|
|
String(String),
|
|
Number(i32),
|
|
}
|
|
|
|
impl BooleanLike {
|
|
pub fn as_bool(&self) -> bool {
|
|
match self {
|
|
BooleanLike::Boolean(b) => *b,
|
|
BooleanLike::String(s) => s.to_lowercase() == "true",
|
|
BooleanLike::Number(n) => *n != 0,
|
|
}
|
|
}
|
|
}
|