mx20022_validate/lib.rs
1//! Schema and business rule validation for ISO 20022 financial messages.
2//!
3//! # Overview
4//!
5//! This crate provides layered validation for ISO 20022 messages:
6//!
7//! 1. **Rule layer** ([`rules`]) — individual, reusable validators (IBAN, BIC,
8//! length, regex pattern).
9//! 2. **Schema layer** ([`schema`]) — orchestrates rules against field constraints
10//! derived from XSD facets.
11//!
12//! # Quick start
13//!
14//! ```rust
15//! use mx20022_validate::rules::RuleRegistry;
16//!
17//! let registry = RuleRegistry::with_defaults();
18//!
19//! // Validate an IBAN
20//! let errors = registry.validate_field(
21//! "GB82WEST12345698765432",
22//! "/Document/CdtTrfTxInf/CdtrAcct/Id/IBAN",
23//! &["IBAN_CHECK"],
24//! );
25//! assert!(errors.is_empty());
26//!
27//! // Validate a BIC
28//! let errors = registry.validate_field(
29//! "AAAAGB2L",
30//! "/Document/CdtTrfTxInf/CdtrAgt/FinInstnId/BICFI",
31//! &["BIC_CHECK"],
32//! );
33//! assert!(errors.is_empty());
34//! ```
35
36pub mod error;
37pub mod rules;
38pub mod schema;
39pub mod schemes;
40pub mod typed;
41
42// Convenience re-exports
43pub use error::{Severity, ValidationError, ValidationResult};
44pub use rules::RuleRegistry;
45pub use schema::SchemaValidator;