Rename impl_standard_builder from impl_default_via_builder
I have Plans for this macro. In particular: * I have a wip branch which tests that the Builder can be deserialised from an empty config (ie, that config reading of a config with a blank section for this item works). * I think we should autogenerate $Config::builder(), and promote that, rather than $ConfigBuilder::default(). This macro could do that.
This commit is contained in:
parent
888d6e0511
commit
c1c6f2b376
|
@ -18,7 +18,7 @@ use std::collections::HashMap;
|
|||
use std::path::Path;
|
||||
use std::path::PathBuf;
|
||||
use std::time::Duration;
|
||||
pub use tor_config::impl_default_via_builder;
|
||||
pub use tor_config::impl_standard_builder;
|
||||
pub use tor_config::{CfgPath, CfgPathError, ConfigBuildError, Reconfigure};
|
||||
|
||||
/// Types for configuring how Tor circuits are built.
|
||||
|
@ -57,7 +57,7 @@ pub struct ClientAddrConfig {
|
|||
#[builder(default)]
|
||||
pub(crate) allow_local_addrs: bool,
|
||||
}
|
||||
impl_default_via_builder! { ClientAddrConfig }
|
||||
impl_standard_builder! { ClientAddrConfig }
|
||||
|
||||
/// Configuration for client behavior relating to stream connection timeouts
|
||||
///
|
||||
|
@ -89,7 +89,7 @@ pub struct StreamTimeoutConfig {
|
|||
#[builder_field_attr(serde(default, with = "humantime_serde::option"))]
|
||||
pub(crate) resolve_ptr_timeout: Duration,
|
||||
}
|
||||
impl_default_via_builder! { StreamTimeoutConfig }
|
||||
impl_standard_builder! { StreamTimeoutConfig }
|
||||
|
||||
impl ClientAddrConfig {
|
||||
/// Return a new [`ClientAddrConfigBuilder`].
|
||||
|
@ -146,7 +146,7 @@ pub struct StorageConfig {
|
|||
#[builder(setter(into), default = "default_state_dir()")]
|
||||
state_dir: CfgPath,
|
||||
}
|
||||
impl_default_via_builder! { StorageConfig }
|
||||
impl_standard_builder! { StorageConfig }
|
||||
|
||||
/// Return the default cache directory.
|
||||
fn default_cache_dir() -> CfgPath {
|
||||
|
@ -269,7 +269,7 @@ pub struct TorClientConfig {
|
|||
#[builder_field_attr(serde(default))]
|
||||
pub(crate) stream_timeouts: StreamTimeoutConfig,
|
||||
}
|
||||
impl_default_via_builder! { TorClientConfig }
|
||||
impl_standard_builder! { TorClientConfig }
|
||||
|
||||
/// Helper to convert convert_override_net_params
|
||||
fn convert_override_net_params(
|
||||
|
|
|
@ -7,7 +7,7 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
use arti_client::config::TorClientConfigBuilder;
|
||||
use arti_client::TorClientConfig;
|
||||
use tor_config::{impl_default_via_builder, ConfigBuildError};
|
||||
use tor_config::{impl_standard_builder, ConfigBuildError};
|
||||
|
||||
use crate::{LoggingConfig, LoggingConfigBuilder};
|
||||
|
||||
|
@ -26,7 +26,7 @@ pub struct ApplicationConfig {
|
|||
#[builder(default)]
|
||||
pub(crate) watch_configuration: bool,
|
||||
}
|
||||
impl_default_via_builder! { ApplicationConfig }
|
||||
impl_standard_builder! { ApplicationConfig }
|
||||
|
||||
/// Configuration for one or more proxy listeners.
|
||||
#[derive(Deserialize, Debug, Clone, Builder, Eq, PartialEq)]
|
||||
|
@ -44,7 +44,7 @@ pub struct ProxyConfig {
|
|||
#[builder(default)]
|
||||
pub(crate) dns_port: Option<u16>,
|
||||
}
|
||||
impl_default_via_builder! { ProxyConfig }
|
||||
impl_standard_builder! { ProxyConfig }
|
||||
|
||||
/// Return the default value for `socks_port`
|
||||
#[allow(clippy::unnecessary_wraps)]
|
||||
|
@ -71,7 +71,7 @@ pub struct SystemConfig {
|
|||
#[builder(setter(into), default = "default_max_files()")]
|
||||
pub(crate) max_files: u64,
|
||||
}
|
||||
impl_default_via_builder! { SystemConfig }
|
||||
impl_standard_builder! { SystemConfig }
|
||||
|
||||
/// Return the default maximum number of file descriptors to launch with.
|
||||
fn default_max_files() -> u64 {
|
||||
|
@ -128,7 +128,7 @@ pub struct ArtiConfig {
|
|||
#[builder_field_attr(serde(flatten))]
|
||||
tor: TorClientConfig,
|
||||
}
|
||||
impl_default_via_builder! { ArtiConfig }
|
||||
impl_standard_builder! { ArtiConfig }
|
||||
|
||||
impl TryFrom<config::Config> for ArtiConfig {
|
||||
type Error = config::ConfigError;
|
||||
|
|
|
@ -5,7 +5,7 @@ use derive_builder::Builder;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::path::Path;
|
||||
use std::str::FromStr;
|
||||
use tor_config::impl_default_via_builder;
|
||||
use tor_config::impl_standard_builder;
|
||||
use tor_config::{define_list_builder_accessors, define_list_builder_helper};
|
||||
use tor_config::{CfgPath, ConfigBuildError};
|
||||
use tracing::{warn, Subscriber};
|
||||
|
@ -52,7 +52,7 @@ pub struct LoggingConfig {
|
|||
#[builder(default)]
|
||||
log_sensitive_information: bool,
|
||||
}
|
||||
impl_default_via_builder! { LoggingConfig }
|
||||
impl_standard_builder! { LoggingConfig }
|
||||
|
||||
/// Return a default tracing filter value for `logging.console`.
|
||||
#[allow(clippy::unnecessary_wraps)]
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
//! Most types in this module are re-exported by `arti-client`.
|
||||
|
||||
use tor_basic_utils::define_accessor_trait;
|
||||
use tor_config::impl_default_via_builder;
|
||||
use tor_config::impl_standard_builder;
|
||||
use tor_config::{define_list_builder_accessors, define_list_builder_helper, ConfigBuildError};
|
||||
use tor_guardmgr::fallback::FallbackList;
|
||||
|
||||
|
@ -41,7 +41,7 @@ pub struct PathConfig {
|
|||
#[builder(default = "ipv6_prefix_default()")]
|
||||
ipv6_subnet_family_prefix: u8,
|
||||
}
|
||||
impl_default_via_builder! { PathConfig }
|
||||
impl_standard_builder! { PathConfig }
|
||||
|
||||
/// Default value for ipv4_subnet_family_prefix.
|
||||
fn ipv4_prefix_default() -> u8 {
|
||||
|
@ -119,7 +119,7 @@ pub struct PreemptiveCircuitConfig {
|
|||
#[builder(default = "default_preemptive_min_exit_circs_for_port()")]
|
||||
pub(crate) min_exit_circs_for_port: usize,
|
||||
}
|
||||
impl_default_via_builder! { PreemptiveCircuitConfig }
|
||||
impl_standard_builder! { PreemptiveCircuitConfig }
|
||||
|
||||
/// Configuration for circuit timeouts, expiration, and so on.
|
||||
///
|
||||
|
@ -161,7 +161,7 @@ pub struct CircuitTiming {
|
|||
#[builder_field_attr(serde(default, with = "humantime_serde::option"))]
|
||||
pub(crate) request_loyalty: Duration,
|
||||
}
|
||||
impl_default_via_builder! { CircuitTiming }
|
||||
impl_standard_builder! { CircuitTiming }
|
||||
|
||||
/// Return default threshold
|
||||
fn default_preemptive_threshold() -> usize {
|
||||
|
|
|
@ -92,16 +92,21 @@ impl Reconfigure {
|
|||
}
|
||||
}
|
||||
|
||||
/// Defines `Default` for a struct with a `Builder`. Use this, not `derive`.
|
||||
/// Defines standard impls for a struct with a `Builder`, incl `Default`
|
||||
///
|
||||
/// Use this. Do not `#[derive(Builder, Default)]`. That latter approach would produce
|
||||
/// Generates:
|
||||
///
|
||||
/// * `impl Default for $Config`
|
||||
/// * a self-test that this actually works
|
||||
///
|
||||
/// **Use this.** Do not `#[derive(Builder, Default)]`. That latter approach would produce
|
||||
/// wrong answers if builder attributes are used to specify non-`Default` default values.
|
||||
///
|
||||
/// `$Config`'s builder must have default values for all the fields,
|
||||
/// or this macro-generated self-test will fail.
|
||||
/// This should be OK for all elements of our configuration.
|
||||
#[macro_export]
|
||||
macro_rules! impl_default_via_builder { {
|
||||
macro_rules! impl_standard_builder { {
|
||||
$Config:ty
|
||||
} => {
|
||||
$crate::paste!{
|
||||
|
|
|
@ -141,7 +141,7 @@ use std::time::{Duration, Instant, SystemTime};
|
|||
use tor_proto::ClockSkew;
|
||||
use tracing::{debug, info, trace, warn};
|
||||
|
||||
use tor_config::impl_default_via_builder;
|
||||
use tor_config::impl_standard_builder;
|
||||
use tor_config::{define_list_builder_accessors, define_list_builder_helper};
|
||||
use tor_llcrypto::pk;
|
||||
use tor_netdir::{params::NetParameters, NetDir, Relay};
|
||||
|
@ -1234,7 +1234,7 @@ pub struct GuardUsage {
|
|||
restrictions: GuardRestrictionList,
|
||||
}
|
||||
|
||||
impl_default_via_builder! { GuardUsage }
|
||||
impl_standard_builder! { GuardUsage }
|
||||
|
||||
/// List of socket restricteionesses, as configured
|
||||
pub type GuardRestrictionList = Vec<GuardRestriction>;
|
||||
|
|
Loading…
Reference in New Issue