This repository was archived by the owner on Aug 15, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Expand file tree Collapse file tree 1 file changed +20
-2
lines changed Original file line number Diff line number Diff line change @@ -119,14 +119,32 @@ impl FromStr for Uint {
119
119
#[ cfg( feature = "serde" ) ]
120
120
mod serde {
121
121
use super :: * ;
122
+ use :: serde:: de:: Visitor ;
122
123
use :: serde:: { Deserialize , Serialize } ;
123
124
125
+ struct UintVisitor ;
126
+
127
+ impl < ' v > Visitor < ' v > for UintVisitor {
128
+ type Value = Uint ;
129
+
130
+ fn expecting ( & self , formatter : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
131
+ formatter. write_str ( "an integer between 0 and 2^1024*1024*256" )
132
+ }
133
+
134
+ fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
135
+ where
136
+ E : :: serde:: de:: Error ,
137
+ {
138
+ Uint :: from_str ( v) . map_err ( |e| E :: custom ( e. to_string ( ) ) )
139
+ }
140
+ }
141
+
124
142
impl < ' de > Deserialize < ' de > for Uint {
125
143
fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error >
126
144
where
127
145
D : :: serde:: Deserializer < ' de > ,
128
146
{
129
- todo ! ( )
147
+ deserializer . deserialize_str ( UintVisitor )
130
148
}
131
149
}
132
150
@@ -135,7 +153,7 @@ mod serde {
135
153
where
136
154
S : :: serde:: Serializer ,
137
155
{
138
- todo ! ( )
156
+ serializer . serialize_str ( self . to_string ( ) . as_str ( ) )
139
157
}
140
158
}
141
159
}
You can’t perform that action at this time.
0 commit comments