1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
* rumtk attempts to implement HL7 and medical protocols for interoperability in medicine.
* This toolkit aims to be reliable, simple, performant, and standards compliant.
* Copyright (C) 2026 Luis M. Santos, M.D. <lsantos@medicalmasses.com>
* Copyright (C) 2026 MedicalMasses L.L.C. <contact@medicalmasses.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
use crateRUMResult;
use crate;
pub use ;
use ;
///
/// Serialization macro which will take an object instance decorated with [Serialize] trait
/// from serde and return the JSON string representation.
///
/// You can pass up to two parameters. The first parameter is the serializable object instance.
/// The second parameter is a boolean indicating whether to pretty print. Omit the second
/// parameter if not debugging to save on bytes transferred around.
///
/// # Examples
///
/// ## Default
/// ```
/// use rumtk_core::serde::json::{RUMSerJson};
/// use rumtk_core::strings::RUMString;
/// use rumtk_core::rumtk_serialize;
///
/// #[derive(RUMSerJson)]
/// struct MyStruct {
/// hello: RUMString
/// }
///
/// let hw = MyStruct{hello: RUMString::from("World")};
/// let hw_str = rumtk_serialize!(&hw).unwrap();
///
/// assert!(hw_str.len() > 0, "Empty JSON string generated from the test struct!");
///
/// ```
///
///
/// Deserialization macro which will take a JSON string representation and return an instance
/// of the specified type.
///
/// Pass the json string to deserialize. You will need to specify the expected type that will
/// be generated.
///
/// # Example
///
/// ```
/// use rumtk_core::serde::json::{RUMSerJson, RUMDeJson};
/// use rumtk_core::strings::RUMString;
/// use rumtk_core::{rumtk_serialize, rumtk_deserialize};
///
/// #[derive(RUMSerJson, RUMDeJson, PartialEq)]
/// struct MyStruct {
/// hello: RUMString
/// }
///
/// let hw = MyStruct{hello: RUMString::from("World")};
/// let hw_str = rumtk_serialize!(&hw).unwrap();
/// let new_hw: MyStruct = rumtk_deserialize!(&hw_str).unwrap();
///
/// assert!(
/// new_hw == hw,
/// "Deserialized JSON does not match the expected value!"
/// );
///
/// ```
///