1
+ use bytes:: { BufMut , BytesMut } ;
2
+ use serde:: { Serialize , ser} ;
3
+ use crate :: ser:: DataSerializer ;
4
+ use crate :: serde:: error:: { Error , Result } ;
5
+
6
+ pub fn to_bytes < ' ser , T > ( value : & T ) -> Result < & ' ser mut BytesMut >
7
+ where
8
+ T : Serialize ,
9
+ {
10
+ let mut serializer = DataSerializer :: < T > :: new ( ) ;
11
+ value. serialize ( & mut serializer) ?;
12
+ Ok ( & mut serializer. output )
13
+ }
14
+
15
+ impl < ' a , Data > ser:: Serializer for & ' a mut DataSerializer < T > where Data : Serialize {
16
+ type Ok = ( ) ;
17
+ type Error = Error ;
18
+ type SerializeSeq = ( ) ;
19
+ type SerializeTuple = ( ) ;
20
+ type SerializeTupleStruct = ( ) ;
21
+ type SerializeTupleVariant = ( ) ;
22
+ type SerializeMap = ( ) ;
23
+ type SerializeStruct = ( ) ;
24
+ type SerializeStructVariant = ( ) ;
25
+
26
+ fn serialize_bool ( self , v : bool ) -> Result < ( ) > {
27
+ self . output . put_u8 ( v as u8 ) ?
28
+ }
29
+
30
+ fn serialize_i8 ( self , v : i8 ) -> Result < ( ) > {
31
+ self . output . put_i8 ( v) ?
32
+ }
33
+
34
+ fn serialize_i16 ( self , v : i16 ) -> Result < ( ) > {
35
+ self . output . put_i16 ( v) ?
36
+ }
37
+
38
+ fn serialize_i32 ( self , v : i32 ) -> Result < ( ) > {
39
+ self . output . put_i32 ( v) ?
40
+ }
41
+
42
+ fn serialize_i64 ( self , v : i64 ) -> Result < ( ) > {
43
+ self . output . put_i64 ( v) ?
44
+ }
45
+
46
+ fn serialize_i128 ( self , v : i128 ) -> Result < ( ) > {
47
+ self . output . put_i128 ( v) ?
48
+ }
49
+
50
+ fn serialize_u8 ( self , v : u8 ) -> Result < ( ) > {
51
+ self . output . put_u8 ( v) ?
52
+ }
53
+
54
+ fn serialize_u16 ( self , v : u16 ) -> Result < ( ) > {
55
+ self . output . put_u16 ( v) ?
56
+ }
57
+
58
+ fn serialize_u32 ( self , v : u32 ) -> Result < ( ) > {
59
+ self . output . put_u32 ( v) ?
60
+ }
61
+
62
+ fn serialize_u64 ( self , v : u64 ) -> Result < ( ) > {
63
+ self . output . put_u64 ( v) ?
64
+ }
65
+
66
+ fn serialize_u128 ( self , v : u128 ) -> Result < ( ) > {
67
+ self . output . put_u128 ( v) ?
68
+ }
69
+
70
+ fn serialize_f32 ( self , v : f32 ) -> Result < ( ) > {
71
+ self . output . put_f32 ( v) ?
72
+ }
73
+
74
+ fn serialize_f64 ( self , v : f64 ) -> Result < ( ) > {
75
+ self . output . put_f64 ( v) ?
76
+ }
77
+
78
+ fn serialize_char ( self , v : char ) -> Result < ( ) > {
79
+ self . output . put_u8 ( v as u8 ) ?
80
+ }
81
+
82
+ fn serialize_str ( self , v : & str ) -> Result < ( ) > {
83
+ let bytes = v. as_bytes ( ) ;
84
+ self . output . put_u16 ( bytes. len ( ) as u16 ) ;
85
+ self . output . put_slice ( bytes) ;
86
+ Ok ( ( ) )
87
+ }
88
+
89
+ fn serialize_bytes ( self , v : & [ u8 ] ) -> Result < ( ) > {
90
+ todo ! ( )
91
+ }
92
+
93
+ fn serialize_none ( self ) -> Result < ( ) > {
94
+ todo ! ( )
95
+ }
96
+
97
+ fn serialize_some < T > ( self , value : & T ) -> Result < ( ) >
98
+ where
99
+ T : ?Sized + Serialize
100
+ {
101
+ todo ! ( )
102
+ }
103
+
104
+ fn serialize_unit ( self ) -> Result < ( ) > {
105
+ todo ! ( )
106
+ }
107
+
108
+ fn serialize_unit_struct ( self , name : & ' static str ) -> Result < ( ) > {
109
+ todo ! ( )
110
+ }
111
+
112
+ fn serialize_unit_variant ( self , name : & ' static str , variant_index : u32 , variant : & ' static str ) -> Result < ( ) > {
113
+ todo ! ( )
114
+ }
115
+
116
+ fn serialize_newtype_struct < T > ( self , name : & ' static str , value : & T ) -> Result < ( ) >
117
+ where
118
+ T : ?Sized + Serialize
119
+ {
120
+ todo ! ( )
121
+ }
122
+
123
+ fn serialize_newtype_variant < T > ( self , name : & ' static str , variant_index : u32 , variant : & ' static str , value : & T ) -> Result < ( ) >
124
+ where
125
+ T : ?Sized + Serialize
126
+ {
127
+ todo ! ( )
128
+ }
129
+
130
+ fn serialize_seq ( self , len : Option < usize > ) -> Result < Self :: SerializeSeq , Self :: Error > {
131
+ todo ! ( )
132
+ }
133
+
134
+ fn serialize_tuple ( self , len : usize ) -> Result < Self :: SerializeTuple , Self :: Error > {
135
+ todo ! ( )
136
+ }
137
+
138
+ fn serialize_tuple_struct ( self , name : & ' static str , len : usize ) -> Result < Self :: SerializeTupleStruct , Self :: Error > {
139
+ todo ! ( )
140
+ }
141
+
142
+ fn serialize_tuple_variant ( self , name : & ' static str , variant_index : u32 , variant : & ' static str , len : usize ) -> Result < Self :: SerializeTupleVariant , Self :: Error > {
143
+ todo ! ( )
144
+ }
145
+
146
+ fn serialize_map ( self , len : Option < usize > ) -> Result < Self :: SerializeMap , Self :: Error > {
147
+ todo ! ( )
148
+ }
149
+
150
+ fn serialize_struct ( self , name : & ' static str , len : usize ) -> Result < Self :: SerializeStruct , Self :: Error > {
151
+ todo ! ( )
152
+ }
153
+
154
+ fn serialize_struct_variant ( self , name : & ' static str , variant_index : u32 , variant : & ' static str , len : usize ) -> Result < Self :: SerializeStructVariant , Self :: Error > {
155
+ todo ! ( )
156
+ }
157
+ }
0 commit comments