Crate swift_mt_message

Source
Expand description

§Swift MT Message Parser

A comprehensive Rust library for parsing SWIFT MT (Message Type) messages with strong typing, field validation, and extensible architecture. This library provides both high-level message parsing and low-level field access with excellent error reporting.

§Features

  • Type-safe field parsing with dedicated field structs
  • Comprehensive validation using SWIFT format rules
  • Extensible field registry for custom field types
  • Rich error diagnostics with context information
  • Generic message support for unknown message types
  • Backward compatibility with existing APIs

§Supported Message Types

  • MT102: Multiple Customer Credit Transfer
  • MT103: Single Customer Credit Transfer
  • MT103-STP: Single Customer Credit Transfer (Straight Through Processing)
  • MT192: Request for Cancellation
  • MT195: Queries
  • MT196: Answers
  • MT197: Copy of a Message
  • MT199: Free Format Message
  • MT202: General Financial Institution Transfer
  • MT940: Customer Statement Message
  • MT941: Balance Report Message
  • MT942: Interim Transaction Report

§Example Usage

use swift_mt_message::{field_parser::SwiftMessage, mt_models::mt103::MT103};

let message_text = "{1:F01BANKDEFFAXXX0123456789}{2:I103BANKDEFFAXXXU3003}{4:\n:20:FT21234567890\n:23B:CRED\n:32A:210315EUR1234567,89\n:50K:JOHN DOE\n:59:JANE SMITH\n:71A:OUR\n-}";

// Parse as generic message
let message = SwiftMessage::parse(message_text)?;
println!("Message type: {}", message.message_type);

// Convert to specific message type
let mt103 = MT103::from_swift_message(message)?;
println!("Transaction reference: {}", mt103.field_20.transaction_reference);

§MT103-STP with Enhanced Validation

use swift_mt_message::{field_parser::SwiftMessage, mt_models::mt103_stp::MT103STP};

let message_text = "{1:F01BANKDEFFAXXX0123456789}{2:I103BANKDEFFAXXXU3003}{4:\n:20:STP123456789\n:23B:CRED\n:32A:210315EUR1234567,89\n:50K:JOHN DOE\n:59A:DEUTDEFF\n:71A:OUR\n-}";

// Parse as MT103-STP with enhanced validation
let message = SwiftMessage::parse(message_text)?;
let mt103_stp = MT103STP::from_swift_message(message)?;

// Check STP compliance
if mt103_stp.is_stp_compliant() {
    println!("Message is STP compliant");
} else {
    let violations = mt103_stp.get_stp_violations();
    for violation in violations {
        println!("STP Rule {} violated: {}", violation.rule, violation.description);
    }
}

§Field-level Access

use swift_mt_message::field_parser::{SwiftMessage, SwiftField};

let message_text = "{1:F01BANKDEFFAXXX0123456789}{2:I103BANKDEFFAXXXU3003}{4:\n:20:FT21234567890\n:23B:CRED\n:32A:210315EUR1234567,89\n:50K:JOHN DOE\n:59:JANE SMITH\n:71A:OUR\n-}";
let message = SwiftMessage::parse(message_text)?;

// Access individual fields with type safety
for (tag, field) in &message.fields {
    println!("{}: {}", tag, field.to_swift_string());
}

Re-exports§

pub use errors::ErrorCollection;
pub use errors::ErrorContext;
pub use errors::FieldParseError;
pub use errors::ParseError;
pub use errors::ValidationError;
pub use field_parser::SwiftField;
pub use field_parser::SwiftFieldContainer;
pub use field_parser::SwiftMessage;
pub use json::FromJson;
pub use json::JsonBlocks;
pub use json::JsonMessage;
pub use json::MessageMetadata;
pub use json::ToJson;
pub use mt_models::MT103;
pub use mt_models::MT103STP;
pub use mt_models::MT202;
pub use mt_models::STPRuleViolation;
pub use mt_models::STPValidationReport;
pub use tokenizer::SwiftMessageBlocks;
pub use tokenizer::extract_blocks;
pub use tokenizer::parse_block4_fields;
pub use validation::ValidationReport;
pub use validation::ValidationResult;
pub use validation::validate_mt_message_with_rules;

Modules§

config
Configuration management for SWIFT MT message processing
errors
Error types for SWIFT MT message parsing
field_parser
Generic field parser and registry system for SWIFT MT fields
json
JSON conversion utilities for SWIFT MT messages
mt_models
MT Models - SWIFT Message Type Models and Field Definitions
tokenizer
Block and field tokenizer for SWIFT MT messages
utils
Shared utilities for SWIFT MT field validation and parsing
validation
validator
Format Rule Validator for SWIFT MT fields