neo3/neo_types/
serde_value.rs

1use super::ScriptHashExtension;
2use crate::{crypto::Secp256r1PublicKey, Bytes};
3use primitive_types::{H160, H256};
4use serde_json::Value;
5
6pub trait ValueExtension {
7	fn to_value(&self) -> Value;
8}
9
10impl ValueExtension for Bytes {
11	fn to_value(&self) -> Value {
12		Value::String(hex::encode(self))
13	}
14}
15
16impl ValueExtension for String {
17	fn to_value(&self) -> Value {
18		Value::String(self.clone())
19	}
20}
21
22impl ValueExtension for &str {
23	fn to_value(&self) -> Value {
24		Value::String(self.to_string())
25	}
26}
27
28impl ValueExtension for H160 {
29	fn to_value(&self) -> Value {
30		Value::String(ScriptHashExtension::to_hex(self))
31	}
32}
33
34impl ValueExtension for Secp256r1PublicKey {
35	fn to_value(&self) -> Value {
36		Value::String(hex::encode(self.get_encoded(true)))
37	}
38}
39
40impl ValueExtension for H256 {
41	fn to_value(&self) -> Value {
42		Value::String(hex::encode(self))
43	}
44}
45
46impl ValueExtension for u32 {
47	fn to_value(&self) -> Value {
48		Value::Number(serde_json::Number::from(*self))
49	}
50}
51
52impl ValueExtension for u64 {
53	fn to_value(&self) -> Value {
54		Value::Number(serde_json::Number::from(*self))
55	}
56}
57
58impl ValueExtension for i32 {
59	fn to_value(&self) -> Value {
60		Value::Number(serde_json::Number::from(*self))
61	}
62}
63
64impl ValueExtension for i64 {
65	fn to_value(&self) -> Value {
66		Value::Number(serde_json::Number::from(*self))
67	}
68}
69
70impl ValueExtension for bool {
71	fn to_value(&self) -> Value {
72		Value::Bool(*self)
73	}
74}