litl_val/
val_ref.rs

1use ordered_float::NotNan;
2
3use super::{map_ref::MapRef, val::Val};
4
5#[derive(PartialEq, Eq, Debug, Hash, PartialOrd, Ord)]
6pub enum ValRef<'a> {
7    Null,
8    Bool(bool),
9    Number(NotNan<f64>),
10    String(&'a str),
11    Array(&'a [Val]),
12    Object(MapRef<'a>),
13}
14
15impl<'a> ValRef<'a> {
16    #[inline]
17    pub fn as_str(self) -> Option<&'a str> {
18        match self {
19            ValRef::String(s) => Some(s),
20            _ => None,
21        }
22    }
23
24    #[inline]
25    pub fn get<S: AsRef<str>>(self, key: S) -> Option<&'a Val> {
26        match self {
27            ValRef::Object(o) => o.get(key),
28            _ => None,
29        }
30    }
31}