pub struct Config { /* private fields */ }Expand description
Top-level configuration value: a single named ConfPool.
The YAML document mirrors the C reference: a top-level mapping with exactly one key, the pool name, whose value is the pool body.
Implementations§
Source§impl Config
impl Config
Sourcepub fn parse_str(input: &str) -> Result<Self, ConfError>
pub fn parse_str(input: &str) -> Result<Self, ConfError>
Parse a YAML configuration document from a string.
Performs structural validation (exactly one pool, no unknown
keys) but does not apply defaults. Call Config::finalize
before Config::validate to fully prepare the config.
§Examples
use dynomite::conf::Config;
let yaml = "p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n";
let cfg = Config::parse_str(yaml).unwrap();
assert_eq!(cfg.pool_name(), "p");
assert!(Config::parse_str("").is_err());Sourcepub fn parse_file(path: &Path) -> Result<Self, ConfError>
pub fn parse_file(path: &Path) -> Result<Self, ConfError>
Parse a YAML configuration document from a filesystem path.
§Examples
use std::io::Write;
use dynomite::conf::Config;
let mut f = tempfile::NamedTempFile::new().unwrap();
writeln!(f, "p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
let cfg = Config::parse_file(f.path()).unwrap();
assert_eq!(cfg.pool_name(), "p");Sourcepub fn pool_name(&self) -> &str
pub fn pool_name(&self) -> &str
The configured pool name (the single top-level YAML key).
§Examples
use dynomite::conf::Config;
let cfg = Config::parse_str("my_pool:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
assert_eq!(cfg.pool_name(), "my_pool");Sourcepub fn pool_mut(&mut self) -> &mut ConfPool
pub fn pool_mut(&mut self) -> &mut ConfPool
Mutably borrow the inner ConfPool.
§Examples
use dynomite::conf::Config;
let mut cfg = Config::parse_str("p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
cfg.pool_mut().preconnect = Some(true);
assert_eq!(cfg.pool().preconnect, Some(true));Sourcepub fn finalize(&mut self)
pub fn finalize(&mut self)
Apply default values to any field left unset by the YAML.
§Examples
use dynomite::conf::Config;
let mut cfg = Config::parse_str("p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
assert!(cfg.pool().rack.is_none());
cfg.finalize();
assert!(cfg.pool().rack.is_some());Sourcepub fn validate(&self) -> Result<(), ConfError>
pub fn validate(&self) -> Result<(), ConfError>
Run the full validation pass.
§Examples
use dynomite::conf::Config;
let mut cfg = Config::parse_str("p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
cfg.finalize();
cfg.validate().unwrap();Sourcepub fn test_conf(&self) -> Result<String, ConfError>
pub fn test_conf(&self) -> Result<String, ConfError>
Equivalent of dynomite -t -c <file>: finalize, validate, and
produce a short status string.
§Examples
use dynomite::conf::Config;
let cfg = Config::parse_str("p:\n listen: 127.0.0.1:1\n dyn_listen: 127.0.0.1:2\n tokens: '1'\n servers:\n - 127.0.0.1:3:1\n data_store: 0\n").unwrap();
assert!(cfg.test_conf().unwrap().contains("is valid"));Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnsafeUnpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more