ethers_abi/
state_mutability.rs1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3
4#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
6#[derive(Debug, Copy, Clone, PartialEq, Eq)]
7pub enum StateMutability {
8 #[cfg_attr(feature = "serde", serde(rename = "pure"))]
10 Pure,
11 #[cfg_attr(feature = "serde", serde(rename = "view"))]
13 View,
14 #[cfg_attr(feature = "serde", serde(rename = "nonpayable"))]
16 NonPayable,
17 #[cfg_attr(feature = "serde", serde(rename = "payable"))]
19 Payable,
20}
21
22impl Default for StateMutability {
23 fn default() -> Self {
24 Self::NonPayable
25 }
26}
27
28#[cfg(all(test, feature = "serde"))]
29mod test {
30 #[cfg(not(feature = "std"))]
31 use crate::no_std_prelude::*;
32 use crate::{tests::assert_json_eq, StateMutability};
33
34 #[test]
35 fn state_mutability() {
36 let json = r#"
37 [
38 "pure",
39 "view",
40 "nonpayable",
41 "payable"
42 ]
43 "#;
44
45 let deserialized: Vec<StateMutability> = serde_json::from_str(json).unwrap();
46
47 assert_eq!(
48 deserialized,
49 vec![StateMutability::Pure, StateMutability::View, StateMutability::NonPayable, StateMutability::Payable,]
50 );
51
52 assert_json_eq(json, &serde_json::to_string(&deserialized).unwrap());
53 }
54}