-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Minor: consolidate ConfigExtension example into API docs #13954
Changes from 5 commits
14c83db
30becba
d56110d
01995c9
83881c0
21eb83c
c433575
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -889,8 +889,48 @@ impl ConfigOptions { | |
} | ||
} | ||
|
||
/// [`ConfigExtension`] provides a mechanism to store third-party configuration within DataFusion | ||
/// [`ConfigExtension`] provides a mechanism to store third-party configuration | ||
/// within DataFusion [`ConfigOptions`] | ||
/// | ||
/// This mechanism can be used to pass configuration to user defined functions | ||
/// or optimizer passes | ||
/// | ||
/// # Example | ||
/// ``` | ||
/// use datafusion_common::{ | ||
/// config::ConfigExtension, extensions_options, | ||
/// config::ConfigOptions, | ||
/// }; | ||
/// // Define a new configuration struct using the `extensions_options` macro | ||
/// extensions_options! { | ||
/// /// My own config options. | ||
/// pub struct MyConfig { | ||
/// /// Should "foo" be replaced by "bar"? | ||
/// pub foo_to_bar: bool, default = true | ||
/// | ||
/// /// How many "baz" should be created? | ||
/// pub baz_count: usize, default = 1337 | ||
/// } | ||
/// } | ||
/// | ||
/// impl ConfigExtension for MyConfig { | ||
/// const PREFIX: &'static str = "my_config"; | ||
/// } | ||
/// | ||
/// // set up config struct and register extension | ||
/// let mut config = ConfigOptions::default(); | ||
/// config.extensions.insert(MyConfig::default()); | ||
/// | ||
/// // overwrite config default | ||
/// config.set("my_config.baz_count", "42").unwrap(); | ||
/// | ||
/// // check config state | ||
/// let my_config = config.extensions.get::<MyConfig>().unwrap(); | ||
/// assert!(my_config.foo_to_bar,); | ||
/// assert_eq!(my_config.baz_count, 42,); | ||
/// ``` | ||
/// | ||
/// # Note: | ||
/// Unfortunately associated constants are not currently object-safe, and so this | ||
/// extends the object-safe [`ExtensionOptions`] | ||
pub trait ConfigExtension: ExtensionOptions { | ||
|
@@ -901,6 +941,8 @@ pub trait ConfigExtension: ExtensionOptions { | |
} | ||
|
||
/// An object-safe API for storing arbitrary configuration | ||
/// do | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Thank you for this good catch. I am not sure why I made this change. Fixed in c433575 It looks much better now |
||
/// See [`ConfigExtension`] for user defined configuration | ||
pub trait ExtensionOptions: Send + Sync + fmt::Debug + 'static { | ||
/// Return `self` as [`Any`] | ||
/// | ||
|
@@ -1108,6 +1150,8 @@ pub trait Visit { | |
/// - `<default_value>`: Default value matching the field type like `42`. | ||
/// | ||
/// # Example | ||
/// See also a full example on the [`ConfigExtension`] documentation | ||
/// | ||
/// ``` | ||
/// use datafusion_common::extensions_options; | ||
/// | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is the same example, moved into the docs