From ce27cc0fd7c91db47cc0eaff02d18df7cfe7215c Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 23 Oct 2023 16:27:17 +0100 Subject: [PATCH 1/2] Delete docs for vestigial AsyncConfigBuilder This struct seems to be a remnant of a previous approach to async. It cannot be used, and the documentation was lies. There isn't a `build` method. There are, in fact, no methods at all. Signed-off-by: Ian Jackson Signed-off-by: Matthias Beyer --- src/builder.rs | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/src/builder.rs b/src/builder.rs index 547e1180..6e9459fc 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -103,23 +103,17 @@ pub struct DefaultState { sources: Vec>, } -/// The asynchronous configuration builder. -/// -/// Similar to a [`ConfigBuilder`] it maintains a set of defaults, a set of sources, and overrides. -/// -/// Defaults do not override anything, sources override defaults, and overrides override anything else. -/// Within those three groups order of adding them at call site matters - entities added later take precedence. -/// -/// For more detailed description and examples see [`ConfigBuilder`]. -/// [`AsyncConfigBuilder`] is just an extension of it that takes async functions into account. -/// -/// To obtain a [`Config`] call [`build`](AsyncConfigBuilder::build) or [`build_cloned`](AsyncConfigBuilder::build_cloned) -/// -/// # Example -/// Since this library does not implement any [`AsyncSource`] an example in rustdocs cannot be given. -/// Detailed explanation about why such a source is not implemented is in [`AsyncSource`]'s documentation. -/// -/// Refer to [`ConfigBuilder`] for similar API sample usage or to the examples folder of the crate, where such a source is implemented. +// Dummy useless struct +// +// This struct exists only to avoid the semver break +// which would be implied by removing it. +// +// This struct cannot be used for anything useful. +// (Nor can it be extended without a semver break, either.) +// +// In a future release, we should have +// type AsyncConfigBuilder = ConfigBuilder; +#[doc(hidden)] #[derive(Debug, Clone, Default)] pub struct AsyncConfigBuilder {} From c494cd8eb8372631b224552414b59c5dee08e3a0 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 23 Oct 2023 16:31:04 +0100 Subject: [PATCH 2/2] Mark AsyncConfigBuilder deprecated Signed-off-by: Ian Jackson Signed-off-by: Matthias Beyer --- src/builder.rs | 1 + src/lib.rs | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/builder.rs b/src/builder.rs index 6e9459fc..45ebb744 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -113,6 +113,7 @@ pub struct DefaultState { // // In a future release, we should have // type AsyncConfigBuilder = ConfigBuilder; +#[deprecated = "AsyncConfigBuilder is useless. Use ConfigBuilder"] #[doc(hidden)] #[derive(Debug, Clone, Default)] pub struct AsyncConfigBuilder {} diff --git a/src/lib.rs b/src/lib.rs index 511c638a..b618e75b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -33,7 +33,7 @@ mod ser; mod source; mod value; -pub use crate::builder::{AsyncConfigBuilder, ConfigBuilder}; +pub use crate::builder::ConfigBuilder; pub use crate::config::Config; pub use crate::env::Environment; pub use crate::error::ConfigError; @@ -46,6 +46,9 @@ pub use crate::source::AsyncSource; pub use crate::source::Source; pub use crate::value::{Value, ValueKind}; +#[allow(deprecated)] +pub use crate::builder::AsyncConfigBuilder; + // Re-export #[cfg(feature = "convert-case")] pub use convert_case::Case;