@@ -11,7 +11,7 @@ use serde::{
11
11
/// PrefixlessVec overrides the serialization to _not_ write a length prefix.
12
12
#[ derive( Clone , Debug , Hash , PartialEq , PartialOrd ) ]
13
13
struct PrefixlessVec < T > {
14
- data : Vec < T > ,
14
+ inner : Vec < T > ,
15
15
}
16
16
17
17
impl < T > Serialize for PrefixlessVec < T >
21
21
#[ inline]
22
22
fn serialize < S : serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
23
23
let mut seq = serializer. serialize_seq ( None ) ?;
24
- for item in & self . data {
24
+ for item in & self . inner {
25
25
seq. serialize_element ( item) ?;
26
26
}
27
27
seq. end ( )
75
75
) ;
76
76
}
77
77
78
- Ok ( PrefixlessVec { data } )
78
+ Ok ( PrefixlessVec { inner : data } )
79
79
}
80
80
}
81
81
@@ -105,15 +105,36 @@ pub struct PrefixedVec<L, T> {
105
105
data : PrefixlessVec < T > ,
106
106
}
107
107
108
- impl < T , L > From < Vec < T > > for PrefixedVec < L , T > {
108
+ impl < L , T > From < Vec < T > > for PrefixedVec < L , T > {
109
109
fn from ( data : Vec < T > ) -> Self {
110
110
Self {
111
111
__phantom : std:: marker:: PhantomData ,
112
- data : PrefixlessVec { data } ,
112
+ data : PrefixlessVec { inner : data } ,
113
113
}
114
114
}
115
115
}
116
116
117
+ impl < L , T > From < PrefixedVec < L , T > > for Vec < T > {
118
+ fn from ( data : PrefixedVec < L , T > ) -> Self {
119
+ data. data . inner
120
+ }
121
+ }
122
+
123
+ impl < L , T > IntoIterator for PrefixedVec < L , T > {
124
+ type Item = T ;
125
+ type IntoIter = std:: vec:: IntoIter < Self :: Item > ;
126
+
127
+ fn into_iter ( self ) -> Self :: IntoIter {
128
+ self . data . inner . into_iter ( )
129
+ }
130
+ }
131
+
132
+ impl < L , T > PrefixedVec < L , T > {
133
+ pub fn iter ( & self ) -> std:: slice:: Iter < T > {
134
+ self . data . inner . iter ( )
135
+ }
136
+ }
137
+
117
138
impl < L , T > Serialize for PrefixedVec < L , T >
118
139
where
119
140
T : Serialize ,
@@ -123,7 +144,7 @@ where
123
144
{
124
145
#[ inline]
125
146
fn serialize < S : serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
126
- let len: L = L :: try_from ( self . data . data . len ( ) ) . unwrap ( ) ;
147
+ let len: L = L :: try_from ( self . data . inner . len ( ) ) . unwrap ( ) ;
127
148
let mut st = serializer. serialize_struct ( "SizedVec" , 1 ) ?;
128
149
st. serialize_field ( "len" , & len) ?;
129
150
st. serialize_field ( "data" , & self . data ) ?;
0 commit comments