SourcedConfig

Struct SourcedConfig 

Source
pub struct SourcedConfig<State = ConfigLoaded> {
    pub global: SourcedGlobalConfig,
    pub per_file_ignores: SourcedValue<HashMap<String, Vec<String>>>,
    pub per_file_flavor: SourcedValue<IndexMap<String, MarkdownFlavor>>,
    pub rules: BTreeMap<String, SourcedRuleConfig>,
    pub loaded_files: Vec<String>,
    pub unknown_keys: Vec<(String, String, Option<String>)>,
    pub project_root: Option<PathBuf>,
    pub validation_warnings: Vec<ConfigValidationWarning>,
    /* private fields */
}
Expand description

Configuration with provenance tracking for values.

The State type parameter encodes the validation state:

  • ConfigLoaded: Config has been loaded but not validated
  • ConfigValidated: Config has been validated and can be converted to Config

§Typestate Pattern

This uses the typestate pattern to ensure validation happens before conversion:

let loaded: SourcedConfig<ConfigLoaded> = SourcedConfig::load_with_discovery(...)?;
let validated: SourcedConfig<ConfigValidated> = loaded.validate(&registry)?;
let config: Config = validated.into();  // Only works on ConfigValidated!

Attempting to convert a ConfigLoaded config directly to Config is a compile error.

Fields§

§global: SourcedGlobalConfig§per_file_ignores: SourcedValue<HashMap<String, Vec<String>>>§per_file_flavor: SourcedValue<IndexMap<String, MarkdownFlavor>>§rules: BTreeMap<String, SourcedRuleConfig>§loaded_files: Vec<String>§unknown_keys: Vec<(String, String, Option<String>)>§project_root: Option<PathBuf>

Project root directory (parent of config file), used for resolving relative paths

§validation_warnings: Vec<ConfigValidationWarning>

Validation warnings (populated after validate() is called)

Implementations§

Source§

impl SourcedConfig<ConfigLoaded>

Source

pub fn load( config_path: Option<&str>, cli_overrides: Option<&SourcedGlobalConfig>, ) -> Result<Self, ConfigError>

Load and merge configurations from files and CLI overrides.

Source

pub fn load_with_discovery( config_path: Option<&str>, cli_overrides: Option<&SourcedGlobalConfig>, skip_auto_discovery: bool, ) -> Result<Self, ConfigError>

Load and merge configurations from files and CLI overrides. If skip_auto_discovery is true, only explicit config paths are loaded.

Source

pub fn validate( self, registry: &RuleRegistry, ) -> Result<SourcedConfig<ConfigValidated>, ConfigError>

Validate the configuration against a rule registry.

This method transitions the config from ConfigLoaded to ConfigValidated state, enabling conversion to Config. Validation warnings are stored in the config and can be displayed to the user.

§Example
let loaded = SourcedConfig::load_with_discovery(path, None, false)?;
let validated = loaded.validate(&registry)?;
let config: Config = validated.into();
Source

pub fn validate_into( self, registry: &RuleRegistry, ) -> Result<(Config, Vec<ConfigValidationWarning>), ConfigError>

Validate and convert to Config in one step (convenience method).

This combines validate() and into() for callers who want the validation warnings separately.

Source

pub fn into_validated_unchecked(self) -> SourcedConfig<ConfigValidated>

Skip validation and convert directly to ConfigValidated state.

§Safety

This method bypasses validation. Use only when:

  • You’ve already validated via validate_config_sourced()
  • You’re in test code that doesn’t need validation
  • You’re migrating legacy code and will add proper validation later

Prefer validate() for new code.

Trait Implementations§

Source§

impl<State: Clone> Clone for SourcedConfig<State>

Source§

fn clone(&self) -> SourcedConfig<State>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<State: Debug> Debug for SourcedConfig<State>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SourcedConfig<ConfigLoaded>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<SourcedConfig<ConfigValidated>> for Config

Convert a validated configuration to the final Config type.

This implementation only exists for SourcedConfig<ConfigValidated>, ensuring that validation must occur before conversion.

Source§

fn from(sourced: SourcedConfig<ConfigValidated>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<State> Freeze for SourcedConfig<State>

§

impl<State> RefUnwindSafe for SourcedConfig<State>
where State: RefUnwindSafe,

§

impl<State> Send for SourcedConfig<State>
where State: Send,

§

impl<State> Sync for SourcedConfig<State>
where State: Sync,

§

impl<State> Unpin for SourcedConfig<State>
where State: Unpin,

§

impl<State> UnwindSafe for SourcedConfig<State>
where State: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more