Skip to main content

ValidatorRegistry

Struct ValidatorRegistry 

Source
pub struct ValidatorRegistry { /* private fields */ }
Expand description

Registry that maps FileType values to cached validator instances.

This is the extension point for the validation engine. A ValidatorRegistry owns pre-constructed Validator instances for each supported FileType, eliminating per-file instantiation overhead.

Most callers should use ValidatorRegistry::with_defaults to obtain a registry pre-populated with all built-in validators. For advanced use cases (custom providers, disabling validators), use ValidatorRegistry::builder.

Implementations§

Source§

impl ValidatorRegistry

Source

pub fn new() -> Self

Create an empty registry with no registered validators.

Source

pub fn with_defaults() -> Self

Create a registry pre-populated with built-in validators.

Source

pub fn builder() -> ValidatorRegistryBuilder

Create a ValidatorRegistryBuilder for ergonomic construction.

§Example
use agnix_core::ValidatorRegistry;

let registry = ValidatorRegistry::builder()
    .with_defaults()
    .without_validator("XmlValidator")
    .build();
Source

pub fn register(&mut self, file_type: FileType, factory: ValidatorFactory)

Register a validator factory for a given file type.

The factory is called exactly once at registration time. If the validator’s name appears in the disabled set, the instance is immediately dropped (the factory is still called once to obtain the validator name). For built-in validators registered via with_defaults(), this factory call is avoided automatically using static names.

Source

pub fn total_validator_count(&self) -> usize

Return the total number of cached validator instances across all file types.

Source

pub fn total_factory_count(&self) -> usize

👎Deprecated since 0.12.2:

renamed to total_validator_count() - validators are now cached, not re-instantiated

Return the total number of registered validator instances across all file types.

Source

pub fn validators_for(&self, file_type: FileType) -> &[Box<dyn Validator>]

Return a reference to the cached validator instances for the given file type.

Returns an empty slice if no validators are registered for file_type. Instances whose name() appeared in the disabled_validators set were already excluded at registration time.

Source

pub fn disable_validator(&mut self, name: &'static str)

Disable a validator by name at runtime.

The name must match the value returned by Validator::name() (e.g., "XmlValidator"). Matching cached instances are removed from all file types. This is an O(n) scan over all cached validators, which is acceptable since this method is only called at startup.

Source

pub fn disable_validator_owned(&mut self, name: &str)

Disable a validator by name from a runtime string.

Prefer disable_validator for string literals.

Source

pub fn disabled_validator_count(&self) -> usize

Return the number of validator names currently disabled.

Trait Implementations§

Source§

impl Default for ValidatorRegistry

Source§

fn default() -> Self

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

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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, 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.