pub struct ValidatorRegistration { /* private fields */ }Expand description
One validator definition associated with a stable identifier.
§Examples
use std::sync::Arc;
use qubit_validator::{
ArgumentReader, BindError, BoundValidationContext, ExecutionError, InputType,
PreparedOutcome, PreparedValidator, RegistrationSource, ValidationValue, ValidatorDescriptor,
ValidatorId, ValidatorRegistration, ValidatorSignature,
};
struct Accept;
impl PreparedValidator for Accept {
fn input_type(&self) -> InputType { InputType::Text }
fn dependency_specs(&self) -> &'static [qubit_validator::DependencySpec] { &[] }
fn validate(
&self,
_: ValidationValue<'_>,
_: &BoundValidationContext<'_>,
) -> Result<PreparedOutcome, ExecutionError> {
Ok(PreparedOutcome::valid())
}
}
fn prepare(_reader: &mut ArgumentReader<'_>) -> Result<Arc<dyn PreparedValidator>, BindError> {
Ok(Arc::new(Accept))
}
static SIGNATURES: &[ValidatorSignature] = &[
ValidatorSignature::new(InputType::Text, &[], prepare),
];
static DESCRIPTOR: ValidatorDescriptor = ValidatorDescriptor::new(SIGNATURES);
let registration = ValidatorRegistration::new(
ValidatorId::new("text.non_blank"),
&DESCRIPTOR,
RegistrationSource::new("rules", "rules::text", "src/text.rs", 12),
);
assert_eq!(registration.id().as_str(), "text.non_blank");Implementations§
Source§impl ValidatorRegistration
impl ValidatorRegistration
Sourcepub const fn new(
id: ValidatorId,
descriptor: &'static ValidatorDescriptor,
source: RegistrationSource,
) -> Self
pub const fn new( id: ValidatorId, descriptor: &'static ValidatorDescriptor, source: RegistrationSource, ) -> Self
Creates a validator registration from its identifier, descriptor, and source.
id is the stable validator identifier, descriptor defines the
supported signatures, and source records where the registration was
declared. The descriptor must live for the duration of the program.
This constructor only stores the supplied values and does not access
the file system. It can be used for local registrations as well as the
registrations generated by register_validator!.
§Parameters
id: Stable identifier claimed by the registration.descriptor: Static definition of the supported signatures.source: Compile-time metadata identifying the declaration site.
§Returns
A registration containing the supplied identifier, descriptor, and source metadata.
Examples found in repository?
150fn main() -> Result<(), Box<dyn Error>> {
151 let registration = ValidatorRegistration::new(
152 ValidatorId::new("text.non_blank"),
153 &DESCRIPTOR,
154 RegistrationSource::new(env!("CARGO_PKG_NAME"), module_path!(), file!(), line!()),
155 );
156 let registry = ValidatorRegistry::from_registrations([registration])?;
157
158 assert!(registry.get("text.non_blank").is_some());
159 let validator = registry.bind("text.non_blank", InputType::Text, &[])?;
160 let context = BoundValidationContext::new(&[]);
161
162 let valid = validator.validate(ValidationValue::Text("Ada"), &context)?;
163 assert_eq!(valid, ValidationOutcome::Valid);
164
165 let invalid = validator.validate(ValidationValue::Text(" "), &context)?;
166 let ValidationOutcome::Invalid(violations) = invalid else {
167 panic!("blank text must be invalid");
168 };
169 assert_eq!(violations.len(), 1);
170 assert_eq!(violations[0].code(), ViolationCode::new("text.blank"));
171
172 assert_dependency_specs_come_from_signature()?;
173 assert_parameters_are_consumed_once()?;
174
175 #[cfg(feature = "inventory")]
176 {
177 let global = ValidatorRegistry::try_global()?;
178 assert!(global.get("text.non_blank.global").is_some());
179 }
180
181 Ok(())
182}Sourcepub const fn id(&self) -> ValidatorId
pub const fn id(&self) -> ValidatorId
Sourcepub const fn descriptor(&self) -> &'static ValidatorDescriptor
pub const fn descriptor(&self) -> &'static ValidatorDescriptor
Returns the immutable descriptor.
§Returns
The static descriptor defining this registration’s supported signatures.
Sourcepub const fn source(&self) -> RegistrationSource
pub const fn source(&self) -> RegistrationSource
Returns the source location used for duplicate diagnostics.
§Returns
The compile-time source metadata associated with this registration.
Trait Implementations§
Source§impl Clone for ValidatorRegistration
impl Clone for ValidatorRegistration
impl Copy for ValidatorRegistration
Source§impl Debug for ValidatorRegistration
impl Debug for ValidatorRegistration
Source§impl From<&ValidatorRegistration> for ValidatorRegistration
impl From<&ValidatorRegistration> for ValidatorRegistration
Source§fn from(value: &ValidatorRegistration) -> Self
fn from(value: &ValidatorRegistration) -> Self
Copies a registration borrowed from a static-compatible reference.