File tree Expand file tree Collapse file tree 1 file changed +9
-5
lines changed Expand file tree Collapse file tree 1 file changed +9
-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,16 @@ 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 . term . decode_as_binary ( ) . expect ( "Term should be a binary" ) ;
333+ let iter = binary. as_slice ( ) . iter ( ) . map ( |x| x. encode ( self . term . get_env ( ) ) ) ;
334+ visitor. visit_seq ( SequenceDeserializer :: new ( iter) )
335+ } else {
329336 return Err ( Error :: ExpectedList ) ;
330337 }
331-
332- let iter: ListIterator = self . term . decode ( ) . or ( Err ( Error :: ExpectedList ) ) ?;
333- visitor. visit_seq ( SequenceDeserializer :: new ( iter) )
334338 }
335339
336340 #[ inline]
You can’t perform that action at this time.
0 commit comments