swift_mt_message/
lib.rs

1//! # SWIFT MT Message Parser
2//!
3//! Rust library for parsing, validating, and generating SWIFT MT financial messages.
4//!
5//! ## Features
6//! - **Type-safe parsing** with dedicated field structures
7//! - **SWIFT validation** with 1,335 error codes (T/C/D/E/G series)
8//! - **Sample generation** with configurable scenarios
9//! - **JSON serialization** with clean flattened output
10//! - **30+ message types** (MT101-MT950)
11//!
12//! ## Quick Start
13//! ```rust
14//! use swift_mt_message::parser::SwiftParser;
15//!
16//! # fn main() -> swift_mt_message::Result<()> {
17//! let message = "{1:F01BANKDEFFAXXX0000000000}{2:I103BANKDEFFAXXXU3003}{4:\r\n:20:REF123\r\n:23B:CRED\r\n:32A:240719USD1234,56\r\n:50K:/12345678\r\nJOHN DOE\r\n:59:/98765432\r\nJANE SMITH\r\n:71A:OUR\r\n-}";
18//! let parsed = SwiftParser::parse_auto(message)?;
19//! # Ok(())
20//! # }
21//! ```
22
23pub mod errors;
24pub mod fields;
25pub mod headers;
26pub mod messages;
27pub mod parsed_message;
28pub mod parser;
29pub mod sample;
30pub mod scenario_config;
31pub mod swift_error_codes;
32pub mod swift_message;
33pub mod traits;
34pub mod utils;
35pub mod validation_result;
36
37// Plugin module for dataflow-rs integration
38pub mod plugin;
39
40// Re-export all message types
41pub use messages::*;
42
43// Re-export core types
44pub use errors::{
45    ParseError, ParseResult, Result, SwiftBusinessError, SwiftContentError, SwiftFormatError,
46    SwiftGeneralError, SwiftRelationError, SwiftValidationError, SwiftValidationResult,
47    ValidationError, error_codes,
48};
49pub use headers::{ApplicationHeader, BasicHeader, Trailer, UserHeader};
50pub use parsed_message::ParsedSwiftMessage;
51pub use parser::{SwiftParser, extract_base_tag};
52pub use swift_error_codes as swift_codes;
53pub use swift_message::SwiftMessage;
54pub use traits::{SwiftField, SwiftMessageBody};
55pub use utils::{
56    get_field_tag_for_mt, get_field_tag_with_variant, is_numbered_field, map_variant_to_numbered,
57};
58pub use validation_result::ValidationResult;
59
60// Re-export sample generation
61pub use sample::{SampleGenerator, generate_sample, generate_sample_with_config};
62pub use scenario_config::ScenarioConfig;
63
64/// Simplified result type for SWIFT operations
65pub type SwiftResult<T> = std::result::Result<T, crate::errors::ParseError>;