swift_mt_message/fields/
mod.rs

1//! # SWIFT MT Message Fields
2//!
3//! ## Purpose
4//! Comprehensive field definitions for all SWIFT MT message types, providing type-safe parsing,
5//! validation, and serialization for individual message fields.
6//!
7//! ## Field Architecture
8//! Each field module provides:
9//! - **Type-Safe Structures**: Strongly-typed field definitions with validation
10//! - **Format Compliance**: SWIFT User Handbook format specification adherence
11//! - **Variant Support**: Complex enum fields with multiple format options (e.g., Field50: A/F/K)
12//! - **JSON Serialization**: Clean JSON output without enum wrapper layers
13//!
14//! ## Field Categories
15//! - **Reference Fields**: Transaction references, message references (Field 20, 21)
16//! - **Amount Fields**: Currencies, amounts, exchange rates (Field 32, 33, 36)
17//! - **Party Fields**: Customer and institution identification (Field 50-59)
18//! - **Date/Time Fields**: Value dates, execution dates (Field 30, 32A)
19//! - **Instruction Fields**: Processing instructions and codes (Field 23, 71)
20//! - **Information Fields**: Remittance and additional information (Field 70, 72)
21//!
22//! ## Field Format Support
23//! All fields support SWIFT format specifications:
24//! - `n`: Numeric characters (0-9)
25//! - `a`: Alphabetic characters (A-Z, a-z)
26//! - `c`: Capital letters (A-Z)
27//! - `x`: Any character except spaces
28//! - `h`: Hexadecimal characters (0-9, A-F)
29//! - `d`: Decimal numbers with precision
30//!
31//! ## Usage Example
32//! ```rust
33//! use swift_mt_message::fields::{Field20, Field32A, Field50OrderingCustomerAFK, Field59};
34//! use swift_mt_message::SwiftField;
35//!
36//! # fn main() -> swift_mt_message::Result<()> {
37//! // Parse simple field
38//! let field_20 = Field20::parse("TXN123456")?;
39//!
40//! // Parse complex amount field
41//! let field_32a = Field32A::parse("240315USD1000,00")?;
42//!
43//! // Parse enum field with variant
44//! let field_50 = Field50OrderingCustomerAFK::parse_with_variant("JOHN DOE\n123 MAIN ST", Some("K"), Some("50"))?;
45//! # Ok(())
46//! # }
47//! ```
48
49pub mod field11;
50pub use field11::*;
51
52pub mod field12;
53pub use field12::*;
54
55pub mod field13;
56pub use field13::*;
57
58pub mod field19;
59pub use field19::*;
60
61pub mod field20;
62pub use field20::*;
63
64pub mod field21;
65pub use field21::*;
66
67pub mod field23;
68pub use field23::*;
69
70pub mod field25;
71pub use field25::*;
72
73pub mod field26;
74pub use field26::*;
75
76pub mod field28;
77pub use field28::*;
78
79pub mod field30;
80pub use field30::*;
81
82pub mod field32;
83pub use field32::*;
84
85pub mod field33;
86pub use field33::*;
87
88pub mod field34;
89pub use field34::*;
90
91pub mod field36;
92pub use field36::*;
93
94pub mod field37;
95pub use field37::*;
96
97pub mod field50;
98pub use field50::*;
99
100pub mod field51;
101pub use field51::*;
102
103pub mod field52;
104pub use field52::*;
105
106pub mod field53;
107pub use field53::*;
108
109pub mod field54;
110pub use field54::*;
111
112pub mod field55;
113pub use field55::*;
114
115pub mod field56;
116pub use field56::*;
117
118pub mod field57;
119pub use field57::*;
120
121pub mod field58;
122pub use field58::*;
123
124pub mod field59;
125pub use field59::*;
126
127pub mod field60;
128pub use field60::*;
129
130pub mod field61;
131pub use field61::*;
132
133pub mod field62;
134pub use field62::*;
135
136pub mod field64;
137pub use field64::*;
138
139pub mod field65;
140pub use field65::*;
141
142pub mod field70;
143pub use field70::*;
144
145pub mod field71;
146pub use field71::*;
147
148pub mod field72;
149pub use field72::*;
150
151pub mod field75;
152pub use field75::*;
153
154pub mod field76;
155pub use field76::*;
156
157pub mod field77;
158pub use field77::*;
159
160pub mod field79;
161pub use field79::*;
162
163pub mod field86;
164pub use field86::*;
165
166pub mod field90;
167pub use field90::*;