1use crate::error::*;
2
3#[derive(Debug, PartialEq)]
5pub struct Parameter {
6 pub(crate) name: String,
7 pub(crate) required: bool,
8 pub(crate) default: Option<String>,
9}
10
11impl Parameter {
12 pub fn new(name: &str) -> Self {
14 Self {
15 name: name.into(),
16 required: false,
17 default: None,
18 }
19 }
20
21 pub fn set_required(mut self, required: bool) -> Result<Self> {
24 if self.default.is_some() {
25 return Err(Error::IllegalRequiredError(self.name));
26 }
27 self.required = required;
28
29 Ok(self)
30 }
31
32 pub fn set_default(mut self, default: &str) -> Result<Self> {
35 if self.required {
36 return Err(Error::IllegalDefaultError(self.name));
37 }
38 self.default = Some(default.to_string());
39
40 Ok(self)
41 }
42}