SwiftField

Derive Macro SwiftField 

Source
#[derive(SwiftField)]
{
    // Attributes available to this derive:
    #[component]
}
Expand description

Derive macro for SwiftField trait implementation

Generates parsing, serialization, and validation code for SWIFT field structures. Supports component-based field definitions with format specifications.

§Basic Usage

§Simple Field

use swift_mt_message_macros::SwiftField;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, SwiftField)]
struct Field20 {
    #[component("16x")]
    reference: String,
}

§Multi-Component Field

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, SwiftField)]
struct Field32A {
    #[component("6!n")]     // Date: YYMMDD
    date: String,
    #[component("3!a")]     // Currency: ISO code
    currency: String,
    #[component("15d")]     // Amount: decimal
    amount: f64,
}

§Enum Field (Multiple Variants)

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, SwiftField)]
enum Field50 {
    A(Field50A),
    F(Field50F),
    K(Field50K),
}

§Format Specifications

The #[component("format")] attribute supports SWIFT format specifications:

  • Fixed length: 3!a (exactly 3 alphabetic chars)
  • Variable length: 35x (up to 35 any chars)
  • Optional: [/34x] (optional account with slash prefix)
  • Repetitive: 4*35x (up to 4 lines of 35 chars each)
  • Decimal: 15d (decimal number up to 15 digits)

§Generated Methods

The macro generates these methods for the SwiftField trait:

  • parse(value: &str) -> Result<Self> - Parse from SWIFT format string
  • to_swift_string(&self) -> String - Convert to SWIFT format string
  • format_spec() -> &'static str - Return format specification