diff --git a/src/types.rs b/src/types.rs index 97f7fca..a646781 100644 --- a/src/types.rs +++ b/src/types.rs @@ -89,6 +89,55 @@ impl Value { _ => (), } } + + pub fn map(self) -> Option> { + match self { + Value::Map(map) => Some(map), + _ => None, + } + } + + pub fn array(self) -> Option> { + match self { + Value::Array(vec) => Some(vec), + _ => None, + } + } + + pub fn file(self) -> Option<(String, PathBuf)> { + match self { + Value::File(name, path) => Some((name, path)), + _ => None, + } + } + + pub fn text(self) -> Option { + match self { + Value::Text(text) => Some(text), + _ => None, + } + } + + pub fn int(self) -> Option { + match self { + Value::Int(int) => Some(int), + _ => None, + } + } + + pub fn float(self) -> Option { + match self { + Value::Float(float) => Some(float), + _ => None, + } + } + + pub fn bytes(self) -> Option { + match self { + Value::Bytes(bytes) => Some(bytes), + _ => None, + } + } } impl From for Value {