add wrapper to serde that allows serializing iterators as sequences

This commit is contained in:
Oliver Schneider
2017-01-12 15:31:40 +01:00
parent ca47eb929c
commit dced4416a7
4 changed files with 90 additions and 1 deletions
+41
View File
@@ -15,6 +15,8 @@ use self::serde_test::{
extern crate fnv;
use self::fnv::FnvHasher;
use serde::ser::iterator;
//////////////////////////////////////////////////////////////////////////
#[derive(Serialize)]
@@ -98,6 +100,45 @@ declare_ser_tests! {
Token::I32(1),
],
}
test_iterator {
iterator([0; 0].iter()) => &[
Token::SeqStart(Some(0)),
Token::SeqEnd,
],
iterator([1, 2, 3].iter()) => &[
Token::SeqStart(Some(3)),
Token::SeqSep,
Token::I32(1),
Token::SeqSep,
Token::I32(2),
Token::SeqSep,
Token::I32(3),
Token::SeqEnd,
],
iterator([1, 2, 3].iter().map(|x| x * 2)) => &[
Token::SeqStart(Some(3)),
Token::SeqSep,
Token::I32(2),
Token::SeqSep,
Token::I32(4),
Token::SeqSep,
Token::I32(6),
Token::SeqEnd,
],
iterator([1, 2, 3].iter().filter(|&x| x % 2 != 0)) => &[
Token::SeqStart(None),
Token::SeqSep,
Token::I32(1),
Token::SeqSep,
Token::I32(3),
Token::SeqEnd,
],
}
test_slice {
&[0][..0] => &[
Token::SeqStart(Some(0)),