1
- use crate :: NodeState ;
1
+ use crate :: { Node , NodeState } ;
2
2
3
3
pub enum DefaultForbidden { }
4
4
5
- pub struct ParameterOptions < ' a , ' b , T > {
6
- node : & ' a crate :: NodeState ,
7
- name : & ' b str ,
5
+ pub struct ParameterOptions < ' a , T > {
6
+ name : & ' a str ,
8
7
default : Option < T > ,
9
8
}
9
+
10
10
pub trait StructuredParametersMeta < T > : Sized {
11
11
fn declare_structured_ (
12
+ node : & NodeState ,
12
13
options : ParameterOptions < T > ,
13
14
) -> core:: result:: Result < Self , crate :: DeclarationError > ;
14
15
}
15
16
16
17
pub trait StructuredParameters : Sized {
17
18
fn declare_structured < T > (
19
+ node : & NodeState ,
18
20
options : ParameterOptions < T > ,
19
21
) -> core:: result:: Result < Self , crate :: DeclarationError >
20
22
where
21
23
Self : StructuredParametersMeta < T > ,
22
24
{
23
- Self :: declare_structured_ ( options)
25
+ Self :: declare_structured_ ( node , options)
24
26
}
25
27
}
26
28
impl < T : crate :: ParameterVariant > StructuredParameters for crate :: MandatoryParameter < T > { }
27
29
impl < T : crate :: ParameterVariant > StructuredParametersMeta < T > for crate :: MandatoryParameter < T > {
28
30
fn declare_structured_ (
31
+ node : & NodeState ,
29
32
options : ParameterOptions < T > ,
30
33
) -> core:: result:: Result < Self , crate :: DeclarationError > {
31
- let builder = options . node . declare_parameter ( options. name ) ;
34
+ let builder = node. declare_parameter ( options. name ) ;
32
35
let builder = match options. default {
33
36
Some ( default) => builder. default ( default) ,
34
37
None => builder,
@@ -39,9 +42,10 @@ impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::Mandator
39
42
impl < T : crate :: ParameterVariant > StructuredParameters for crate :: ReadOnlyParameter < T > { }
40
43
impl < T : crate :: ParameterVariant > StructuredParametersMeta < T > for crate :: ReadOnlyParameter < T > {
41
44
fn declare_structured_ (
45
+ node : & NodeState ,
42
46
options : ParameterOptions < T > ,
43
47
) -> core:: result:: Result < Self , crate :: DeclarationError > {
44
- let builder = options . node . declare_parameter ( options. name ) ;
48
+ let builder = node. declare_parameter ( options. name ) ;
45
49
let builder = match options. default {
46
50
Some ( default) => builder. default ( default) ,
47
51
None => builder,
@@ -52,9 +56,10 @@ impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::ReadOnly
52
56
impl < T : crate :: ParameterVariant > StructuredParameters for crate :: OptionalParameter < T > { }
53
57
impl < T : crate :: ParameterVariant > StructuredParametersMeta < T > for crate :: OptionalParameter < T > {
54
58
fn declare_structured_ (
59
+ node : & NodeState ,
55
60
options : ParameterOptions < T > ,
56
61
) -> core:: result:: Result < Self , crate :: DeclarationError > {
57
- let builder = options . node . declare_parameter ( options. name ) ;
62
+ let builder = node. declare_parameter ( options. name ) ;
58
63
let builder = match options. default {
59
64
Some ( default) => builder. default ( default) ,
60
65
None => builder,
@@ -71,11 +76,13 @@ impl NodeState {
71
76
where
72
77
T : StructuredParameters + StructuredParametersMeta < T0 > ,
73
78
{
74
- T :: declare_structured ( ParameterOptions {
75
- node : self ,
76
- name : name,
77
- default : None ,
78
- } )
79
+ T :: declare_structured (
80
+ self ,
81
+ ParameterOptions {
82
+ name : name,
83
+ default : None ,
84
+ } ,
85
+ )
79
86
}
80
87
}
81
88
0 commit comments