Loading Cargo.lock +1 −0 Original line number Original line Diff line number Diff line Loading @@ -3342,6 +3342,7 @@ dependencies = [ "serde", "serde", "shellexpand-fork", "shellexpand-fork", "thiserror", "thiserror", "tor-basic-utils", "tor-error", "tor-error", "tracing", "tracing", "tracing-test", "tracing-test", Loading crates/tor-config/Cargo.toml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,7 @@ default = ["expand-paths"] expand-paths = ["shellexpand", "directories"] expand-paths = ["shellexpand", "directories"] [dependencies] [dependencies] tor-basic-utils = { path="../tor-basic-utils", version = "0.2.0"} tor-error = { path="../tor-error", version = "0.2.0"} tor-error = { path="../tor-error", version = "0.2.0"} thiserror = "1" thiserror = "1" Loading crates/tor-config/src/lib.rs +2 −0 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,8 @@ pub use err::{ConfigBuildError, ReconfigureError}; pub use mut_cfg::MutCfg; pub use mut_cfg::MutCfg; pub use path::CfgPath; pub use path::CfgPath; pub use tor_basic_utils::macro_coalesce_args; /// Rules for reconfiguring a running Arti instance. /// Rules for reconfiguring a running Arti instance. #[derive(Debug, Clone, Copy, Eq, PartialEq)] #[derive(Debug, Clone, Copy, Eq, PartialEq)] #[non_exhaustive] #[non_exhaustive] Loading crates/tor-config/src/list_builder.rs +13 −2 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,10 @@ /// nontrivial, you should put the actual defaulting functionality in a (probably-private) /// nontrivial, you should put the actual defaulting functionality in a (probably-private) /// function, as the macro will expand it twice. /// function, as the macro will expand it twice. /// /// /// The `item_build` clause, if supplied, provides a closure with type /// `FnMut(&ThingBuilder) -> Result<Thing, ConfigBuildErro>`; the default is to call /// `thing_builder.build()`. /// /// ``` /// ``` /// use derive_builder::Builder; /// use derive_builder::Builder; /// use serde::Deserialize; /// use serde::Deserialize; Loading Loading @@ -59,6 +63,7 @@ macro_rules! define_list_config_builder { } } built: $Built:ty = $built:expr; built: $Built:ty = $built:expr; default = $default:expr; default = $default:expr; $( item_build: $item_build:expr; )? } => { } => { $($docs_and_attrs)* $($docs_and_attrs)* #[derive(Default, Clone, Deserialize)] #[derive(Default, Clone, Deserialize)] Loading Loading @@ -100,10 +105,16 @@ macro_rules! define_list_config_builder { &default_buffer &default_buffer } } }; }; let $things = $things let $things = $things .iter() .iter() .map(|item| item.build()) .map( .collect::<Result<_, _>>()?; $crate::macro_coalesce_args!{ [ $( $item_build )? ], [ |item| item.build() ], } ) .collect::<Result<_, ConfigBuildError>>()?; Ok($built) Ok($built) } } } } Loading Loading
Cargo.lock +1 −0 Original line number Original line Diff line number Diff line Loading @@ -3342,6 +3342,7 @@ dependencies = [ "serde", "serde", "shellexpand-fork", "shellexpand-fork", "thiserror", "thiserror", "tor-basic-utils", "tor-error", "tor-error", "tracing", "tracing", "tracing-test", "tracing-test", Loading
crates/tor-config/Cargo.toml +1 −0 Original line number Original line Diff line number Diff line Loading @@ -15,6 +15,7 @@ default = ["expand-paths"] expand-paths = ["shellexpand", "directories"] expand-paths = ["shellexpand", "directories"] [dependencies] [dependencies] tor-basic-utils = { path="../tor-basic-utils", version = "0.2.0"} tor-error = { path="../tor-error", version = "0.2.0"} tor-error = { path="../tor-error", version = "0.2.0"} thiserror = "1" thiserror = "1" Loading
crates/tor-config/src/lib.rs +2 −0 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,8 @@ pub use err::{ConfigBuildError, ReconfigureError}; pub use mut_cfg::MutCfg; pub use mut_cfg::MutCfg; pub use path::CfgPath; pub use path::CfgPath; pub use tor_basic_utils::macro_coalesce_args; /// Rules for reconfiguring a running Arti instance. /// Rules for reconfiguring a running Arti instance. #[derive(Debug, Clone, Copy, Eq, PartialEq)] #[derive(Debug, Clone, Copy, Eq, PartialEq)] #[non_exhaustive] #[non_exhaustive] Loading
crates/tor-config/src/list_builder.rs +13 −2 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,10 @@ /// nontrivial, you should put the actual defaulting functionality in a (probably-private) /// nontrivial, you should put the actual defaulting functionality in a (probably-private) /// function, as the macro will expand it twice. /// function, as the macro will expand it twice. /// /// /// The `item_build` clause, if supplied, provides a closure with type /// `FnMut(&ThingBuilder) -> Result<Thing, ConfigBuildErro>`; the default is to call /// `thing_builder.build()`. /// /// ``` /// ``` /// use derive_builder::Builder; /// use derive_builder::Builder; /// use serde::Deserialize; /// use serde::Deserialize; Loading Loading @@ -59,6 +63,7 @@ macro_rules! define_list_config_builder { } } built: $Built:ty = $built:expr; built: $Built:ty = $built:expr; default = $default:expr; default = $default:expr; $( item_build: $item_build:expr; )? } => { } => { $($docs_and_attrs)* $($docs_and_attrs)* #[derive(Default, Clone, Deserialize)] #[derive(Default, Clone, Deserialize)] Loading Loading @@ -100,10 +105,16 @@ macro_rules! define_list_config_builder { &default_buffer &default_buffer } } }; }; let $things = $things let $things = $things .iter() .iter() .map(|item| item.build()) .map( .collect::<Result<_, _>>()?; $crate::macro_coalesce_args!{ [ $( $item_build )? ], [ |item| item.build() ], } ) .collect::<Result<_, ConfigBuildError>>()?; Ok($built) Ok($built) } } } } Loading