swift_mt_message/
lib.rs

1//! # Swift MT Message Parser - Enhanced Architecture
2//!
3//! A comprehensive Rust library for parsing SWIFT MT (Message Type) messages with strong typing,
4//! complex field structures, comprehensive validation, and flattened JSON serialization.
5//!
6//! ## Key Features
7//!
8//! - **Complex Field Structures**: Full enum-based field variants (Field50: A/F/K, Field59: A/Basic)
9//! - **Flattened JSON Serialization**: Clean JSON output without enum wrapper layers
10//! - **Type-safe field parsing** with dedicated field structs and automatic validation
11//! - **Comprehensive Field Support**: All MT103 fields with proper SWIFT compliance
12//! - **Bidirectional Serialization**: Perfect round-trip JSON serialization/deserialization
13//! - **Extensive Validation**: BIC validation, field length checks, format compliance
14//!
15//! ## Supported Field Types
16//!
17//! ### Complex Enum Fields
18//! - **Field50** (Ordering Customer): 50A (Account+BIC), 50F (Party+Address), 50K (Name+Address)
19//! - **Field59** (Beneficiary Customer): 59A (Account+BIC), 59 (Basic lines)
20//!
21//! ### Institution Fields (with account_line_indicator)
22//! - **Field52A** (Ordering Institution): BIC + optional account + account_line_indicator
23//! - **Field53A-57A** (Correspondent/Intermediary): All with account_line_indicator support
24//!
25//! ### Simple Type Fields
26//! - **Field32A** (Value Date/Currency/Amount): NaiveDate + String + f64
27//! - **Field20, 23B, 70, 71A**: Proper field name alignment with old version
28//!
29//! ## JSON Output Structure
30//!
31//! The library produces clean, flattened JSON without enum wrapper layers:
32//!
33//! ```json
34//! {
35//!   "50": {
36//!     "name_and_address": ["JOHN DOE", "123 MAIN ST"]
37//!   },
38//!   "59": {
39//!     "account": "DE89370400440532013000",
40//!     "bic": "DEUTDEFFXXX"
41//!   }
42//! }
43//! ```
44//!
45//! Instead of nested enum structures like `{"50": {"K": {...}}}`.
46
47pub mod errors;
48pub mod fields;
49pub mod headers;
50pub mod messages;
51pub mod parsed_message;
52pub mod parser;
53pub mod sample;
54pub mod scenario_config;
55pub mod swift_error_codes;
56pub mod swift_message;
57pub mod traits;
58pub mod utils;
59pub mod validation_result;
60
61// Re-export all message types
62pub use messages::*;
63
64// Re-export core types
65pub use errors::{
66    ParseError, Result, SwiftBusinessError, SwiftContentError, SwiftFormatError, SwiftGeneralError,
67    SwiftRelationError, SwiftValidationError, SwiftValidationResult, ValidationError, error_codes,
68};
69pub use headers::{ApplicationHeader, BasicHeader, Trailer, UserHeader};
70pub use parsed_message::ParsedSwiftMessage;
71pub use parser::{SwiftParser, extract_base_tag};
72pub use swift_error_codes as swift_codes;
73pub use swift_message::SwiftMessage;
74pub use traits::{SwiftField, SwiftMessageBody};
75pub use utils::{get_field_tag_for_mt, get_field_tag_with_variant};
76pub use validation_result::ValidationResult;
77
78// Re-export derive macros
79pub use swift_mt_message_macros::{SwiftField, SwiftMessage, serde_swift_fields};
80
81// Re-export sample generation
82pub use sample::{SampleGenerator, generate_sample, generate_sample_with_config};
83pub use scenario_config::ScenarioConfig;
84
85/// Simplified result type for SWIFT operations
86pub type SwiftResult<T> = std::result::Result<T, crate::errors::ParseError>;