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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.