iota_model/
transfer.rs

1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4use serde_json;
5
6/// Represents a transfer in IOTA
7#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
8pub struct Transfer {
9    /// Unix epoch: Seconds since Jan 1, 1970
10    pub timestamp: String,
11    /// Contains either the sender or recipient's address
12    pub address: String,
13    /// Transaction hash
14    pub hash: String,
15    /// Persistence
16    pub persistence: bool,
17    /// Amount of IOTA tokens to deposit to or withdraw from the address
18    pub value: i64,
19    /// Message of the transfer
20    pub message: String,
21    /// User-defined tag
22    pub tag: String,
23    /// User-defined tag (soon to be removed)
24    pub obsolete_tag: String,
25}
26
27impl fmt::Display for Transfer {
28    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
29        write!(
30            f,
31            "{}",
32            serde_json::to_string_pretty(self).unwrap_or_default()
33        )
34    }
35}
36
37impl Into<Vec<Transfer>> for Transfer {
38    fn into(self) -> Vec<Transfer> {
39        vec![self]
40    }
41}
42
43impl Into<Vec<Transfer>> for &Transfer {
44    fn into(self) -> Vec<Transfer> {
45        vec![self.clone()]
46    }
47}