pub trait ConfigExtension: ExtensionOptions {
const PREFIX: &'static str;
}Expand description
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, config::ConfigOptions, extensions_options,
};
// 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
Required Associated Constants§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".