git.delta.rocks / jrsonnet / refs/commits / f287f4626a3f

difftreelog

feat(parser) Defer ArgsDesc to Vec

Лач2020-06-09parent: #6820e6d.patch.diff
in: master

1 file changed

modifiedcrates/jsonnet-parser/src/expr.rsdiffbeforeafterboth
1use serde::{Deserialize, Serialize};1use serde::{Deserialize, Serialize};
2use std::{fmt::Debug, path::PathBuf, rc::Rc};2use std::{fmt::Debug, ops::Deref, path::PathBuf, rc::Rc};
33
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub enum FieldName {5pub enum FieldName {
78/// Defined function parameters78/// Defined function parameters
79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]79#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
80pub struct ParamsDesc(pub Vec<Param>);80pub struct ParamsDesc(pub Vec<Param>);
81impl ParamsDesc {81impl Deref for ParamsDesc {
82 type Target = Vec<Param>;
82 pub fn with_defaults(&self) -> Vec<Param> {83 fn deref(&self) -> &Self::Target {
83 self.0.iter().filter(|e| e.1.is_some()).cloned().collect()84 &self.0
84 }85 }
85}86}
8687
87#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]88#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
88pub struct Arg(pub Option<String>, pub LocExpr);89pub struct Arg(pub Option<String>, pub LocExpr);
89#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]90#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
90pub struct ArgsDesc(pub Vec<Arg>);91pub struct ArgsDesc(pub Vec<Arg>);
92impl Deref for ArgsDesc {
93 type Target = Vec<Arg>;
94 fn deref(&self) -> &Self::Target {
95 &self.0
96 }
97}
9198
92#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]99#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
93pub struct BindSpec {100pub struct BindSpec {