neo3/neo_types/
serde_value.rs1use 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}