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
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum StateMutability {
#[cfg_attr(feature = "serde", serde(rename = "pure"))]
Pure,
#[cfg_attr(feature = "serde", serde(rename = "view"))]
View,
#[cfg_attr(feature = "serde", serde(rename = "nonpayable"))]
NonPayable,
#[cfg_attr(feature = "serde", serde(rename = "payable"))]
Payable,
}
impl Default for StateMutability {
fn default() -> Self {
Self::NonPayable
}
}
#[cfg(all(test, feature = "serde"))]
mod test {
#[cfg(not(feature = "std"))]
use crate::no_std_prelude::*;
use crate::{tests::assert_json_eq, StateMutability};
#[test]
fn state_mutability() {
let json = r#"
[
"pure",
"view",
"nonpayable",
"payable"
]
"#;
let deserialized: Vec<StateMutability> = serde_json::from_str(json).unwrap();
assert_eq!(
deserialized,
vec![StateMutability::Pure, StateMutability::View, StateMutability::NonPayable, StateMutability::Payable,]
);
assert_json_eq(json, &serde_json::to_string(&deserialized).unwrap());
}
}