1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
use std::convert::{TryFrom, TryInto}; use crate::data::Value; use crate::executor::evaluate::Evaluated; use crate::result::{Error, Result}; #[derive(PartialEq, Eq, Hash, Clone, std::fmt::Debug)] pub enum GroupKey { I64(i64), Bool(bool), Str(String), None, } impl TryFrom<&Evaluated<'_>> for GroupKey { type Error = Error; fn try_from(evaluated: &Evaluated<'_>) -> Result<Self> { match evaluated { Evaluated::Literal(l) => Value::try_from(l)?.try_into(), Evaluated::Value(v) => v.as_ref().try_into(), } } }