swift_mt_message/messages/
mt299.rs1use crate::errors::{ParseError, SwiftValidationError};
2use crate::fields::*;
3use crate::parser::MessageParser;
4use crate::parser::utils::*;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
14pub struct MT299 {
15 #[serde(rename = "20")]
17 pub field_20: Field20,
18
19 #[serde(rename = "21", skip_serializing_if = "Option::is_none")]
21 pub field_21: Option<Field21NoOption>,
22
23 #[serde(rename = "79")]
25 pub field_79: Field79,
26}
27
28impl MT299 {
29 pub fn parse_from_block4(block4: &str) -> Result<Self, ParseError> {
31 let mut parser = MessageParser::new(block4, "299");
32
33 let field_20 = parser.parse_field::<Field20>("20")?;
35
36 let field_21 = parser.parse_optional_field::<Field21NoOption>("21")?;
38
39 let field_79 = parser.parse_field::<Field79>("79")?;
41
42 Ok(MT299 {
43 field_20,
44 field_21,
45 field_79,
46 })
47 }
48
49 pub fn validate_network_rules(&self, _stop_on_first_error: bool) -> Vec<SwiftValidationError> {
61 Vec::new()
62 }
63}
64
65impl crate::traits::SwiftMessageBody for MT299 {
66 fn message_type() -> &'static str {
67 "299"
68 }
69
70 fn parse_from_block4(block4: &str) -> Result<Self, crate::errors::ParseError> {
71 Self::parse_from_block4(block4)
72 }
73
74 fn to_mt_string(&self) -> String {
75 let mut result = String::new();
76
77 append_field(&mut result, &self.field_20);
78 append_optional_field(&mut result, &self.field_21);
79 append_field(&mut result, &self.field_79);
80
81 finalize_mt_string(result, false)
82 }
83
84 fn validate_network_rules(&self, stop_on_first_error: bool) -> Vec<SwiftValidationError> {
85 MT299::validate_network_rules(self, stop_on_first_error)
87 }
88}