--- a/crates/jsonnet-parser/src/expr.rs +++ b/crates/jsonnet-parser/src/expr.rs @@ -1,5 +1,5 @@ use serde::{Deserialize, Serialize}; -use std::{fmt::Debug, path::PathBuf, rc::Rc}; +use std::{fmt::Debug, ops::Deref, path::PathBuf, rc::Rc}; #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub enum FieldName { @@ -78,9 +78,10 @@ /// Defined function parameters #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ParamsDesc(pub Vec); -impl ParamsDesc { - pub fn with_defaults(&self) -> Vec { - self.0.iter().filter(|e| e.1.is_some()).cloned().collect() +impl Deref for ParamsDesc { + type Target = Vec; + fn deref(&self) -> &Self::Target { + &self.0 } } @@ -88,6 +89,12 @@ pub struct Arg(pub Option, pub LocExpr); #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct ArgsDesc(pub Vec); +impl Deref for ArgsDesc { + type Target = Vec; + fn deref(&self) -> &Self::Target { + &self.0 + } +} #[derive(Debug, Clone, PartialEq, Serialize, Deserialize)] pub struct BindSpec {