Skip to content

Commit 80ed497

Browse files
committed
Move NodeState from parameter options to enabled default derivation
1 parent cba5837 commit 80ed497

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

rclrs/src/parameter/structured.rs

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,37 @@
1-
use crate::NodeState;
1+
use crate::{Node, NodeState};
22

33
pub enum DefaultForbidden {}
44

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,
87
default: Option<T>,
98
}
9+
1010
pub trait StructuredParametersMeta<T>: Sized {
1111
fn declare_structured_(
12+
node: &NodeState,
1213
options: ParameterOptions<T>,
1314
) -> core::result::Result<Self, crate::DeclarationError>;
1415
}
1516

1617
pub trait StructuredParameters: Sized {
1718
fn declare_structured<T>(
19+
node: &NodeState,
1820
options: ParameterOptions<T>,
1921
) -> core::result::Result<Self, crate::DeclarationError>
2022
where
2123
Self: StructuredParametersMeta<T>,
2224
{
23-
Self::declare_structured_(options)
25+
Self::declare_structured_(node, options)
2426
}
2527
}
2628
impl<T: crate::ParameterVariant> StructuredParameters for crate::MandatoryParameter<T> {}
2729
impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::MandatoryParameter<T> {
2830
fn declare_structured_(
31+
node: &NodeState,
2932
options: ParameterOptions<T>,
3033
) -> core::result::Result<Self, crate::DeclarationError> {
31-
let builder = options.node.declare_parameter(options.name);
34+
let builder = node.declare_parameter(options.name);
3235
let builder = match options.default {
3336
Some(default) => builder.default(default),
3437
None => builder,
@@ -39,9 +42,10 @@ impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::Mandator
3942
impl<T: crate::ParameterVariant> StructuredParameters for crate::ReadOnlyParameter<T> {}
4043
impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::ReadOnlyParameter<T> {
4144
fn declare_structured_(
45+
node: &NodeState,
4246
options: ParameterOptions<T>,
4347
) -> core::result::Result<Self, crate::DeclarationError> {
44-
let builder = options.node.declare_parameter(options.name);
48+
let builder = node.declare_parameter(options.name);
4549
let builder = match options.default {
4650
Some(default) => builder.default(default),
4751
None => builder,
@@ -52,9 +56,10 @@ impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::ReadOnly
5256
impl<T: crate::ParameterVariant> StructuredParameters for crate::OptionalParameter<T> {}
5357
impl<T: crate::ParameterVariant> StructuredParametersMeta<T> for crate::OptionalParameter<T> {
5458
fn declare_structured_(
59+
node: &NodeState,
5560
options: ParameterOptions<T>,
5661
) -> core::result::Result<Self, crate::DeclarationError> {
57-
let builder = options.node.declare_parameter(options.name);
62+
let builder = node.declare_parameter(options.name);
5863
let builder = match options.default {
5964
Some(default) => builder.default(default),
6065
None => builder,
@@ -71,11 +76,13 @@ impl NodeState {
7176
where
7277
T: StructuredParameters + StructuredParametersMeta<T0>,
7378
{
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+
)
7986
}
8087
}
8188

rclrs_proc_macros/src/impl.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ pub(crate) fn derive_struct_parameters(input: DeriveInput) -> syn::Result<TokenS
6161
};
6262
let r = quote! {
6363
#ident : #field_type::declare_structured(
64+
node,
6465
rclrs::parameter::structured::ParameterOptions {
65-
node: options.node,
6666
name: &{match options.name {
6767
"" => #ident_str.to_string(),
6868
prefix => [prefix, ".", #ident_str].concat(),
@@ -84,7 +84,7 @@ pub(crate) fn derive_struct_parameters(input: DeriveInput) -> syn::Result<TokenS
8484
};
8585
}
8686
impl rclrs::parameter::structured::StructuredParametersMeta<rclrs::parameter::structured::DefaultForbidden> for #ident {
87-
fn declare_structured_(options: rclrs::parameter::structured::ParameterOptions<rclrs::parameter::structured::DefaultForbidden>)
87+
fn declare_structured_(node: &rclrs::NodeState, options: rclrs::parameter::structured::ParameterOptions<rclrs::parameter::structured::DefaultForbidden>)
8888
-> core::result::Result<Self, crate::DeclarationError> {
8989
core::result::Result::Ok(Self{ #(#args)*})
9090
}

0 commit comments

Comments
 (0)