File tree Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Expand file tree Collapse file tree 1 file changed +15
-5
lines changed Original file line number Diff line number Diff line change 11use crate :: serde:: { atoms, error:: Error , util} ;
22use crate :: {
3- types:: { ListIterator , MapIterator } ,
3+ types:: { Encoder , ListIterator , MapIterator } ,
44 Term , TermType ,
55} ;
66use serde:: {
@@ -325,12 +325,22 @@ impl<'de, 'a: 'de> de::Deserializer<'de> for Deserializer<'a> {
325325 where
326326 V : Visitor < ' de > ,
327327 {
328- if !( self . term . is_list ( ) | self . term . is_empty_list ( ) ) {
328+ if self . term . is_list ( ) | self . term . is_empty_list ( ) {
329+ let iter: ListIterator = self . term . decode ( ) . or ( Err ( Error :: ExpectedList ) ) ?;
330+ visitor. visit_seq ( SequenceDeserializer :: new ( iter) )
331+ } else if self . term . is_binary ( ) {
332+ let binary = self
333+ . term
334+ . decode_as_binary ( )
335+ . or ( Err ( Error :: ExpectedBinary ) ) ?;
336+ let iter = binary
337+ . as_slice ( )
338+ . iter ( )
339+ . map ( |x| x. encode ( self . term . get_env ( ) ) ) ;
340+ visitor. visit_seq ( SequenceDeserializer :: new ( iter) )
341+ } else {
329342 return Err ( Error :: ExpectedList ) ;
330343 }
331-
332- let iter: ListIterator = self . term . decode ( ) . or ( Err ( Error :: ExpectedList ) ) ?;
333- visitor. visit_seq ( SequenceDeserializer :: new ( iter) )
334344 }
335345
336346 #[ inline]
You can’t perform that action at this time.
0 commit comments