66// option. This file may not be copied, modified, or distributed
77// except according to those terms.
88use serde:: { Serialize , Serializer , Deserialize , Deserializer } ;
9- use serde:: de:: { self , Visitor , SeqVisitor , MapVisitor } ;
9+ use serde:: de:: { self , Visitor , SeqAccess , MapAccess } ;
1010use serde:: ser:: { SerializeSeq , SerializeStruct } ;
1111
1212use std:: fmt;
@@ -43,11 +43,11 @@ impl<I> Serialize for Dim<I>
4343}
4444
4545/// **Requires crate feature `"serde"`**
46- impl < I > Deserialize for Dim < I >
47- where I : Deserialize ,
46+ impl < ' de , I > Deserialize < ' de > for Dim < I >
47+ where I : Deserialize < ' de > ,
4848{
4949 fn deserialize < D > ( deserializer : D ) -> Result < Self , D :: Error >
50- where D : Deserializer
50+ where D : Deserializer < ' de >
5151 {
5252 I :: deserialize ( deserializer) . map ( Dim :: new)
5353 }
@@ -110,25 +110,25 @@ impl<S, Di> ArrayVisitor<S, Di> {
110110static ARRAY_FIELDS : & ' static [ & ' static str ] = & [ "v" , "dim" , "data" ] ;
111111
112112/// **Requires crate feature `"serde"`**
113- impl < A , Di , S > Deserialize for ArrayBase < S , Di >
114- where A : Deserialize ,
115- Di : Deserialize + Dimension ,
113+ impl < ' de , A , Di , S > Deserialize < ' de > for ArrayBase < S , Di >
114+ where A : Deserialize < ' de > ,
115+ Di : Deserialize < ' de > + Dimension ,
116116 S : DataOwned < Elem = A >
117117{
118118 fn deserialize < D > ( deserializer : D ) -> Result < ArrayBase < S , Di > , D :: Error >
119- where D : Deserializer
119+ where D : Deserializer < ' de >
120120 {
121121 deserializer. deserialize_struct ( "Array" , ARRAY_FIELDS , ArrayVisitor :: new ( ) )
122122 }
123123}
124124
125- impl Deserialize for ArrayField {
125+ impl < ' de > Deserialize < ' de > for ArrayField {
126126 fn deserialize < D > ( deserializer : D ) -> Result < ArrayField , D :: Error >
127- where D : Deserializer
127+ where D : Deserializer < ' de >
128128 {
129129 struct ArrayFieldVisitor ;
130130
131- impl Visitor for ArrayFieldVisitor {
131+ impl < ' de > Visitor < ' de > for ArrayFieldVisitor {
132132 type Value = ArrayField ;
133133
134134 fn expecting ( & self , formatter : & mut fmt:: Formatter ) -> fmt:: Result {
@@ -147,13 +147,13 @@ impl Deserialize for ArrayField {
147147 }
148148 }
149149
150- deserializer. deserialize_struct_field ( ArrayFieldVisitor )
150+ deserializer. deserialize_identifier ( ArrayFieldVisitor )
151151 }
152152}
153153
154- impl < A , Di , S > Visitor for ArrayVisitor < S , Di >
155- where A : Deserialize ,
156- Di : Deserialize + Dimension ,
154+ impl < ' de , A , Di , S > Visitor < ' de > for ArrayVisitor < S , Di >
155+ where A : Deserialize < ' de > ,
156+ Di : Deserialize < ' de > + Dimension ,
157157 S : DataOwned < Elem = A >
158158{
159159 type Value = ArrayBase < S , Di > ;
@@ -163,9 +163,9 @@ impl<A, Di, S> Visitor for ArrayVisitor<S,Di>
163163 }
164164
165165 fn visit_seq < V > ( self , mut visitor : V ) -> Result < ArrayBase < S , Di > , V :: Error >
166- where V : SeqVisitor
166+ where V : SeqAccess < ' de > ,
167167 {
168- let v: u8 = match try!( visitor. visit ( ) ) {
168+ let v: u8 = match try!( visitor. next_element ( ) ) {
169169 Some ( value) => value,
170170 None => {
171171 return Err ( de:: Error :: invalid_length ( 0 , & self ) ) ;
@@ -174,14 +174,14 @@ impl<A, Di, S> Visitor for ArrayVisitor<S,Di>
174174
175175 try!( verify_version ( v) ) ;
176176
177- let dim: Di = match try!( visitor. visit ( ) ) {
177+ let dim: Di = match try!( visitor. next_element ( ) ) {
178178 Some ( value) => value,
179179 None => {
180180 return Err ( de:: Error :: invalid_length ( 1 , & self ) ) ;
181181 }
182182 } ;
183183
184- let data: Vec < A > = match try!( visitor. visit ( ) ) {
184+ let data: Vec < A > = match try!( visitor. next_element ( ) ) {
185185 Some ( value) => value,
186186 None => {
187187 return Err ( de:: Error :: invalid_length ( 2 , & self ) ) ;
@@ -196,24 +196,24 @@ impl<A, Di, S> Visitor for ArrayVisitor<S,Di>
196196 }
197197
198198 fn visit_map < V > ( self , mut visitor : V ) -> Result < ArrayBase < S , Di > , V :: Error >
199- where V : MapVisitor ,
199+ where V : MapAccess < ' de > ,
200200 {
201201 let mut v: Option < u8 > = None ;
202202 let mut data: Option < Vec < A > > = None ;
203203 let mut dim: Option < Di > = None ;
204204
205- while let Some ( key) = try!( visitor. visit_key ( ) ) {
205+ while let Some ( key) = try!( visitor. next_key ( ) ) {
206206 match key {
207207 ArrayField :: Version => {
208- let val = try!( visitor. visit_value ( ) ) ;
208+ let val = try!( visitor. next_value ( ) ) ;
209209 try!( verify_version ( val) ) ;
210210 v = Some ( val) ;
211211 } ,
212212 ArrayField :: Data => {
213- data = Some ( try!( visitor. visit_value ( ) ) ) ;
213+ data = Some ( try!( visitor. next_value ( ) ) ) ;
214214 } ,
215215 ArrayField :: Dim => {
216- dim = Some ( try!( visitor. visit_value ( ) ) ) ;
216+ dim = Some ( try!( visitor. next_value ( ) ) ) ;
217217 } ,
218218 }
219219 }
0 commit comments