mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-12 19:01:02 +00:00
Remove lifetime from serde_test::Token
This commit is contained in:
@@ -8,7 +8,7 @@ use token::Token;
|
|||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
/// Runs both `assert_ser_tokens` and `assert_de_tokens`.
|
/// Runs both `assert_ser_tokens` and `assert_de_tokens`.
|
||||||
pub fn assert_tokens<'de, T>(value: &T, tokens: &[Token<'static>])
|
pub fn assert_tokens<'de, T>(value: &T, tokens: &[Token])
|
||||||
where T: Serialize + Deserialize<'de> + PartialEq + Debug
|
where T: Serialize + Deserialize<'de> + PartialEq + Debug
|
||||||
{
|
{
|
||||||
assert_ser_tokens(value, tokens);
|
assert_ser_tokens(value, tokens);
|
||||||
@@ -35,7 +35,7 @@ pub fn assert_ser_tokens_error<T>(value: &T, tokens: &[Token], error: Error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Asserts that the given `tokens` deserialize into `value`.
|
/// Asserts that the given `tokens` deserialize into `value`.
|
||||||
pub fn assert_de_tokens<'de, T>(value: &T, tokens: &[Token<'static>])
|
pub fn assert_de_tokens<'de, T>(value: &T, tokens: &[Token])
|
||||||
where T: Deserialize<'de> + PartialEq + Debug
|
where T: Deserialize<'de> + PartialEq + Debug
|
||||||
{
|
{
|
||||||
let mut de = Deserializer::new(tokens.to_vec().into_iter());
|
let mut de = Deserializer::new(tokens.to_vec().into_iter());
|
||||||
@@ -45,7 +45,7 @@ pub fn assert_de_tokens<'de, T>(value: &T, tokens: &[Token<'static>])
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Asserts that the given `tokens` yield `error` when deserializing.
|
/// Asserts that the given `tokens` yield `error` when deserializing.
|
||||||
pub fn assert_de_tokens_error<'de, T>(tokens: &[Token<'static>], error: Error)
|
pub fn assert_de_tokens_error<'de, T>(tokens: &[Token], error: Error)
|
||||||
where T: Deserialize<'de> + PartialEq + Debug
|
where T: Deserialize<'de> + PartialEq + Debug
|
||||||
{
|
{
|
||||||
let mut de = Deserializer::new(tokens.to_vec().into_iter());
|
let mut de = Deserializer::new(tokens.to_vec().into_iter());
|
||||||
|
|||||||
+24
-24
@@ -9,13 +9,13 @@ use token::Token;
|
|||||||
|
|
||||||
/// A `Deserializer` that reads from a list of tokens.
|
/// A `Deserializer` that reads from a list of tokens.
|
||||||
pub struct Deserializer<I>
|
pub struct Deserializer<I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
tokens: iter::Peekable<I>,
|
tokens: iter::Peekable<I>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<I> Deserializer<I>
|
impl<I> Deserializer<I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
/// Creates the deserializer.
|
/// Creates the deserializer.
|
||||||
pub fn new(tokens: I) -> Deserializer<I> {
|
pub fn new(tokens: I) -> Deserializer<I> {
|
||||||
@@ -23,7 +23,7 @@ impl<I> Deserializer<I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Pulls the next token off of the deserializer, ignoring it.
|
/// Pulls the next token off of the deserializer, ignoring it.
|
||||||
pub fn next_token(&mut self) -> Option<Token<'static>> {
|
pub fn next_token(&mut self) -> Option<Token> {
|
||||||
self.tokens.next()
|
self.tokens.next()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,8 +43,8 @@ impl<I> Deserializer<I>
|
|||||||
|
|
||||||
fn visit_seq<'de, V>(&mut self,
|
fn visit_seq<'de, V>(&mut self,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
sep: Token<'static>,
|
sep: Token,
|
||||||
end: Token<'static>,
|
end: Token,
|
||||||
visitor: V)
|
visitor: V)
|
||||||
-> Result<V::Value, Error>
|
-> Result<V::Value, Error>
|
||||||
where V: Visitor<'de>
|
where V: Visitor<'de>
|
||||||
@@ -61,8 +61,8 @@ impl<I> Deserializer<I>
|
|||||||
|
|
||||||
fn visit_map<'de, V>(&mut self,
|
fn visit_map<'de, V>(&mut self,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
sep: Token<'static>,
|
sep: Token,
|
||||||
end: Token<'static>,
|
end: Token,
|
||||||
visitor: V)
|
visitor: V)
|
||||||
-> Result<V::Value, Error>
|
-> Result<V::Value, Error>
|
||||||
where V: Visitor<'de>
|
where V: Visitor<'de>
|
||||||
@@ -79,7 +79,7 @@ impl<I> Deserializer<I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I> de::Deserializer<'de> for &'a mut Deserializer<I>
|
impl<'de, 'a, I> de::Deserializer<'de> for &'a mut Deserializer<I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
@@ -106,10 +106,10 @@ impl<'de, 'a, I> de::Deserializer<'de> for &'a mut Deserializer<I>
|
|||||||
Some(Token::Char(v)) => visitor.visit_char(v),
|
Some(Token::Char(v)) => visitor.visit_char(v),
|
||||||
Some(Token::Str(v)) => visitor.visit_str(v),
|
Some(Token::Str(v)) => visitor.visit_str(v),
|
||||||
Some(Token::BorrowedStr(v)) => visitor.visit_borrowed_str(v),
|
Some(Token::BorrowedStr(v)) => visitor.visit_borrowed_str(v),
|
||||||
Some(Token::String(v)) => visitor.visit_string(v),
|
Some(Token::String(v)) => visitor.visit_string(v.to_owned()),
|
||||||
Some(Token::Bytes(v)) => visitor.visit_bytes(v),
|
Some(Token::Bytes(v)) => visitor.visit_bytes(v),
|
||||||
Some(Token::BorrowedBytes(v)) => visitor.visit_borrowed_bytes(v),
|
Some(Token::BorrowedBytes(v)) => visitor.visit_borrowed_bytes(v),
|
||||||
Some(Token::ByteBuf(v)) => visitor.visit_byte_buf(v),
|
Some(Token::ByteBuf(v)) => visitor.visit_byte_buf(v.to_vec()),
|
||||||
Some(Token::Option(false)) => visitor.visit_none(),
|
Some(Token::Option(false)) => visitor.visit_none(),
|
||||||
Some(Token::Option(true)) => visitor.visit_some(self),
|
Some(Token::Option(true)) => visitor.visit_some(self),
|
||||||
Some(Token::Unit) => visitor.visit_unit(),
|
Some(Token::Unit) => visitor.visit_unit(),
|
||||||
@@ -354,16 +354,16 @@ impl<'de, 'a, I> de::Deserializer<'de> for &'a mut Deserializer<I>
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
struct DeserializerSeqVisitor<'a, I: 'a>
|
struct DeserializerSeqVisitor<'a, I: 'a>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
de: &'a mut Deserializer<I>,
|
de: &'a mut Deserializer<I>,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
sep: Token<'static>,
|
sep: Token,
|
||||||
end: Token<'static>,
|
end: Token,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I> SeqVisitor<'de> for DeserializerSeqVisitor<'a, I>
|
impl<'de, 'a, I> SeqVisitor<'de> for DeserializerSeqVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
@@ -392,16 +392,16 @@ impl<'de, 'a, I> SeqVisitor<'de> for DeserializerSeqVisitor<'a, I>
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
struct DeserializerMapVisitor<'a, I: 'a>
|
struct DeserializerMapVisitor<'a, I: 'a>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
de: &'a mut Deserializer<I>,
|
de: &'a mut Deserializer<I>,
|
||||||
len: Option<usize>,
|
len: Option<usize>,
|
||||||
sep: Token<'static>,
|
sep: Token,
|
||||||
end: Token<'static>,
|
end: Token,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I> MapVisitor<'de> for DeserializerMapVisitor<'a, I>
|
impl<'de, 'a, I> MapVisitor<'de> for DeserializerMapVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
@@ -436,13 +436,13 @@ impl<'de, 'a, I> MapVisitor<'de> for DeserializerMapVisitor<'a, I>
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
struct DeserializerEnumVisitor<'a, I: 'a>
|
struct DeserializerEnumVisitor<'a, I: 'a>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
de: &'a mut Deserializer<I>,
|
de: &'a mut Deserializer<I>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I> EnumVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
impl<'de, 'a, I> EnumVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
type Variant = Self;
|
type Variant = Self;
|
||||||
@@ -469,7 +469,7 @@ impl<'de, 'a, I> EnumVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I> VariantVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
impl<'de, 'a, I> VariantVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
@@ -558,14 +558,14 @@ impl<'de, 'a, I> VariantVisitor<'de> for DeserializerEnumVisitor<'a, I>
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
struct EnumMapVisitor<'a, I: 'a>
|
struct EnumMapVisitor<'a, I: 'a>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
de: &'a mut Deserializer<I>,
|
de: &'a mut Deserializer<I>,
|
||||||
variant: Option<&'a str>,
|
variant: Option<&'a str>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, I: 'a> EnumMapVisitor<'a, I>
|
impl<'a, I: 'a> EnumMapVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
fn new(de: &'a mut Deserializer<I>, variant: &'a str) -> Self {
|
fn new(de: &'a mut Deserializer<I>, variant: &'a str) -> Self {
|
||||||
EnumMapVisitor {
|
EnumMapVisitor {
|
||||||
@@ -576,7 +576,7 @@ impl<'a, I: 'a> EnumMapVisitor<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, 'a, I: 'a> MapVisitor<'de> for EnumMapVisitor<'a, I>
|
impl<'de, 'a, I: 'a> MapVisitor<'de> for EnumMapVisitor<'a, I>
|
||||||
where I: Iterator<Item = Token<'static>>
|
where I: Iterator<Item = Token>
|
||||||
{
|
{
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ pub enum Error {
|
|||||||
InvalidName(&'static str),
|
InvalidName(&'static str),
|
||||||
|
|
||||||
/// `Serialize` generated a token that didn't match the test.
|
/// `Serialize` generated a token that didn't match the test.
|
||||||
UnexpectedToken(Token<'static>),
|
UnexpectedToken(Token),
|
||||||
|
|
||||||
/// The expected token list was too short.
|
/// The expected token list was too short.
|
||||||
EndOfTokens,
|
EndOfTokens,
|
||||||
|
|||||||
+38
-24
@@ -7,14 +7,14 @@ use token::Token;
|
|||||||
|
|
||||||
/// A `Serializer` that ensures that a value serializes to a given list of tokens.
|
/// A `Serializer` that ensures that a value serializes to a given list of tokens.
|
||||||
pub struct Serializer<'a, I>
|
pub struct Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
tokens: I,
|
tokens: I,
|
||||||
phantom: PhantomData<&'a Token<'a>>,
|
phantom: PhantomData<&'a Token>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, I> Serializer<'a, I>
|
impl<'a, I> Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
/// Creates the serializer.
|
/// Creates the serializer.
|
||||||
pub fn new(tokens: I) -> Serializer<'a, I> {
|
pub fn new(tokens: I) -> Serializer<'a, I> {
|
||||||
@@ -25,13 +25,27 @@ impl<'a, I> Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Pulls the next token off of the serializer, ignoring it.
|
/// Pulls the next token off of the serializer, ignoring it.
|
||||||
pub fn next_token(&mut self) -> Option<&'a Token<'a>> {
|
pub fn next_token(&mut self) -> Option<&'a Token> {
|
||||||
self.tokens.next()
|
self.tokens.next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
macro_rules! assert_next_token {
|
||||||
|
($self:ident, $expected:ident($arg:expr)) => {
|
||||||
|
match $self.tokens.next() {
|
||||||
|
Some(&Token::$expected(v)) if v == $arg => {}
|
||||||
|
Some(other) => {
|
||||||
|
panic!("expected {}({:?}) but serialized as {:?}", stringify!($expected), $arg, other);
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
panic!("expected {}({:?}) after end of serialized tokens", stringify!($expected), $arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -105,12 +119,12 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_str(self, v: &str) -> Result<(), Error> {
|
fn serialize_str(self, v: &str) -> Result<(), Error> {
|
||||||
assert_eq!(self.tokens.next(), Some(&Token::Str(v)));
|
assert_next_token!(self, Str(v));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_bytes(self, value: &[u8]) -> Result<(), Self::Error> {
|
fn serialize_bytes(self, value: &[u8]) -> Result<(), Self::Error> {
|
||||||
assert_eq!(self.tokens.next(), Some(&Token::Bytes(value)));
|
assert_next_token!(self, Bytes(value));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,15 +133,15 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_unit_struct(self, name: &str) -> Result<(), Error> {
|
fn serialize_unit_struct(self, name: &'static str) -> Result<(), Error> {
|
||||||
assert_eq!(self.tokens.next(), Some(&Token::UnitStruct(name)));
|
assert_eq!(self.tokens.next(), Some(&Token::UnitStruct(name)));
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_unit_variant(self,
|
fn serialize_unit_variant(self,
|
||||||
name: &str,
|
name: &'static str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str)
|
variant: &'static str)
|
||||||
-> Result<(), Error> {
|
-> Result<(), Error> {
|
||||||
assert_eq!(self.tokens.next(), Some(&Token::EnumUnit(name, variant)));
|
assert_eq!(self.tokens.next(), Some(&Token::EnumUnit(name, variant)));
|
||||||
Ok(())
|
Ok(())
|
||||||
@@ -141,9 +155,9 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_newtype_variant<T: ?Sized>(self,
|
fn serialize_newtype_variant<T: ?Sized>(self,
|
||||||
name: &str,
|
name: &'static str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &'static str,
|
||||||
value: &T)
|
value: &T)
|
||||||
-> Result<(), Error>
|
-> Result<(), Error>
|
||||||
where T: Serialize
|
where T: Serialize
|
||||||
@@ -186,9 +200,9 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_tuple_variant(self,
|
fn serialize_tuple_variant(self,
|
||||||
name: &str,
|
name: &'static str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &'static str,
|
||||||
len: usize)
|
len: usize)
|
||||||
-> Result<Self, Error> {
|
-> Result<Self, Error> {
|
||||||
assert_eq!(self.tokens.next(),
|
assert_eq!(self.tokens.next(),
|
||||||
@@ -201,15 +215,15 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_struct(self, name: &str, len: usize) -> Result<Self, Error> {
|
fn serialize_struct(self, name: &'static str, len: usize) -> Result<Self, Error> {
|
||||||
assert_eq!(self.tokens.next(), Some(&Token::StructStart(name, len)));
|
assert_eq!(self.tokens.next(), Some(&Token::StructStart(name, len)));
|
||||||
Ok(self)
|
Ok(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn serialize_struct_variant(self,
|
fn serialize_struct_variant(self,
|
||||||
name: &str,
|
name: &'static str,
|
||||||
_variant_index: usize,
|
_variant_index: usize,
|
||||||
variant: &str,
|
variant: &'static str,
|
||||||
len: usize)
|
len: usize)
|
||||||
-> Result<Self, Error> {
|
-> Result<Self, Error> {
|
||||||
assert_eq!(self.tokens.next(),
|
assert_eq!(self.tokens.next(),
|
||||||
@@ -219,7 +233,7 @@ impl<'s, 'a, I> ser::Serializer for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeSeq for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeSeq for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -238,7 +252,7 @@ impl<'s, 'a, I> ser::SerializeSeq for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeTuple for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeTuple for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -257,7 +271,7 @@ impl<'s, 'a, I> ser::SerializeTuple for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeTupleStruct for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeTupleStruct for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -276,7 +290,7 @@ impl<'s, 'a, I> ser::SerializeTupleStruct for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeTupleVariant for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeTupleVariant for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -295,7 +309,7 @@ impl<'s, 'a, I> ser::SerializeTupleVariant for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeMap for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeMap for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -320,7 +334,7 @@ impl<'s, 'a, I> ser::SerializeMap for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeStruct for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeStruct for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
@@ -343,7 +357,7 @@ impl<'s, 'a, I> ser::SerializeStruct for &'s mut Serializer<'a, I>
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl<'s, 'a, I> ser::SerializeStructVariant for &'s mut Serializer<'a, I>
|
impl<'s, 'a, I> ser::SerializeStructVariant for &'s mut Serializer<'a, I>
|
||||||
where I: Iterator<Item = &'a Token<'a>>
|
where I: Iterator<Item = &'a Token>
|
||||||
{
|
{
|
||||||
type Ok = ();
|
type Ok = ();
|
||||||
type Error = Error;
|
type Error = Error;
|
||||||
|
|||||||
+17
-17
@@ -1,5 +1,5 @@
|
|||||||
#[derive(Clone, PartialEq, Debug)]
|
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||||
pub enum Token<'a> {
|
pub enum Token {
|
||||||
/// A serialized `bool`.
|
/// A serialized `bool`.
|
||||||
Bool(bool),
|
Bool(bool),
|
||||||
|
|
||||||
@@ -37,22 +37,22 @@ pub enum Token<'a> {
|
|||||||
Char(char),
|
Char(char),
|
||||||
|
|
||||||
/// A serialized `str`.
|
/// A serialized `str`.
|
||||||
Str(&'a str),
|
Str(&'static str),
|
||||||
|
|
||||||
/// A borrowed `str`.
|
/// A borrowed `str`.
|
||||||
BorrowedStr(&'a str),
|
BorrowedStr(&'static str),
|
||||||
|
|
||||||
/// A serialized `String`.
|
/// A serialized `String`.
|
||||||
String(String),
|
String(&'static str),
|
||||||
|
|
||||||
/// A serialized `[u8]`
|
/// A serialized `[u8]`
|
||||||
Bytes(&'a [u8]),
|
Bytes(&'static [u8]),
|
||||||
|
|
||||||
/// A borrowed `[u8]`.
|
/// A borrowed `[u8]`.
|
||||||
BorrowedBytes(&'a [u8]),
|
BorrowedBytes(&'static [u8]),
|
||||||
|
|
||||||
/// A serialized `ByteBuf`
|
/// A serialized `ByteBuf`
|
||||||
ByteBuf(Vec<u8>),
|
ByteBuf(&'static [u8]),
|
||||||
|
|
||||||
/// The header to a serialized `Option<T>`.
|
/// The header to a serialized `Option<T>`.
|
||||||
///
|
///
|
||||||
@@ -64,13 +64,13 @@ pub enum Token<'a> {
|
|||||||
Unit,
|
Unit,
|
||||||
|
|
||||||
/// A serialized unit struct of the given name.
|
/// A serialized unit struct of the given name.
|
||||||
UnitStruct(&'a str),
|
UnitStruct(&'static str),
|
||||||
|
|
||||||
/// The header to a serialized newtype struct of the given name.
|
/// The header to a serialized newtype struct of the given name.
|
||||||
///
|
///
|
||||||
/// Newtype structs are serialized with this header, followed by the value contained in the
|
/// Newtype structs are serialized with this header, followed by the value contained in the
|
||||||
/// newtype struct.
|
/// newtype struct.
|
||||||
StructNewType(&'a str),
|
StructNewType(&'static str),
|
||||||
|
|
||||||
/// The header to an enum of the given name.
|
/// The header to an enum of the given name.
|
||||||
///
|
///
|
||||||
@@ -79,19 +79,19 @@ pub enum Token<'a> {
|
|||||||
/// `assert_tokens` will fail if this token is used.
|
/// `assert_tokens` will fail if this token is used.
|
||||||
///
|
///
|
||||||
/// TODO: Trash this.
|
/// TODO: Trash this.
|
||||||
EnumStart(&'a str),
|
EnumStart(&'static str),
|
||||||
|
|
||||||
/// A unit variant of an enum of the given name, of the given name.
|
/// A unit variant of an enum of the given name, of the given name.
|
||||||
///
|
///
|
||||||
/// The first string represents the name of the enum, and the second represents the name of the
|
/// The first string represents the name of the enum, and the second represents the name of the
|
||||||
/// variant.
|
/// variant.
|
||||||
EnumUnit(&'a str, &'a str),
|
EnumUnit(&'static str, &'static str),
|
||||||
|
|
||||||
/// The header to a newtype variant of an enum of the given name, of the given name.
|
/// The header to a newtype variant of an enum of the given name, of the given name.
|
||||||
///
|
///
|
||||||
/// The first string represents the name of the enum, and the second represents the name of the
|
/// The first string represents the name of the enum, and the second represents the name of the
|
||||||
/// variant. The value contained within this enum works the same as `StructNewType`.
|
/// variant. The value contained within this enum works the same as `StructNewType`.
|
||||||
EnumNewType(&'a str, &'a str),
|
EnumNewType(&'static str, &'static str),
|
||||||
|
|
||||||
/// The header to a sequence of the given length.
|
/// The header to a sequence of the given length.
|
||||||
///
|
///
|
||||||
@@ -123,7 +123,7 @@ pub enum Token<'a> {
|
|||||||
TupleEnd,
|
TupleEnd,
|
||||||
|
|
||||||
/// The header to a tuple struct of the given name and length.
|
/// The header to a tuple struct of the given name and length.
|
||||||
TupleStructStart(&'a str, usize),
|
TupleStructStart(&'static str, usize),
|
||||||
|
|
||||||
/// A separator, similar to `TupleSep`.
|
/// A separator, similar to `TupleSep`.
|
||||||
TupleStructSep,
|
TupleStructSep,
|
||||||
@@ -147,7 +147,7 @@ pub enum Token<'a> {
|
|||||||
MapEnd,
|
MapEnd,
|
||||||
|
|
||||||
/// The header of a struct of the given name and length, similar to `MapStart`.
|
/// The header of a struct of the given name and length, similar to `MapStart`.
|
||||||
StructStart(&'a str, usize),
|
StructStart(&'static str, usize),
|
||||||
|
|
||||||
/// A separator, similar to `MapSep`.
|
/// A separator, similar to `MapSep`.
|
||||||
StructSep,
|
StructSep,
|
||||||
@@ -156,7 +156,7 @@ pub enum Token<'a> {
|
|||||||
StructEnd,
|
StructEnd,
|
||||||
|
|
||||||
/// The header to a tuple variant of an enum of the given name, of the given name and length.
|
/// The header to a tuple variant of an enum of the given name, of the given name and length.
|
||||||
EnumSeqStart(&'a str, &'a str, usize),
|
EnumSeqStart(&'static str, &'static str, usize),
|
||||||
|
|
||||||
/// A separator, similar to `TupleSep`.
|
/// A separator, similar to `TupleSep`.
|
||||||
EnumSeqSep,
|
EnumSeqSep,
|
||||||
@@ -166,7 +166,7 @@ pub enum Token<'a> {
|
|||||||
|
|
||||||
/// The header of a struct variant of an enum of the given name, of the given name and length,
|
/// The header of a struct variant of an enum of the given name, of the given name and length,
|
||||||
/// similar to `StructStart`.
|
/// similar to `StructStart`.
|
||||||
EnumMapStart(&'a str, &'a str, usize),
|
EnumMapStart(&'static str, &'static str, usize),
|
||||||
|
|
||||||
/// A separator, similar to `StructSep`.
|
/// A separator, similar to `StructSep`.
|
||||||
EnumMapSep,
|
EnumMapSep,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ fn test_borrowed_str() {
|
|||||||
fn test_borrowed_str_from_string() {
|
fn test_borrowed_str_from_string() {
|
||||||
assert_de_tokens_error::<&str>(
|
assert_de_tokens_error::<&str>(
|
||||||
&[
|
&[
|
||||||
Token::String("borrowed".to_owned()),
|
Token::String("borrowed"),
|
||||||
],
|
],
|
||||||
Error::Message("invalid type: string \"borrowed\", expected a borrowed string".to_owned()),
|
Error::Message("invalid type: string \"borrowed\", expected a borrowed string".to_owned()),
|
||||||
);
|
);
|
||||||
@@ -68,7 +68,7 @@ fn test_borrowed_bytes() {
|
|||||||
fn test_borrowed_bytes_from_bytebuf() {
|
fn test_borrowed_bytes_from_bytebuf() {
|
||||||
assert_de_tokens_error::<&[u8]>(
|
assert_de_tokens_error::<&[u8]>(
|
||||||
&[
|
&[
|
||||||
Token::ByteBuf(b"borrowed".to_vec()),
|
Token::ByteBuf(b"borrowed"),
|
||||||
],
|
],
|
||||||
Error::Message("invalid type: byte array, expected a borrowed byte array".to_owned()),
|
Error::Message("invalid type: byte array, expected a borrowed byte array".to_owned()),
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -18,9 +18,9 @@ fn test_bytes() {
|
|||||||
fn test_byte_buf() {
|
fn test_byte_buf() {
|
||||||
let empty = ByteBuf::new();
|
let empty = ByteBuf::new();
|
||||||
assert_tokens(&empty, &[Token::Bytes(b"")]);
|
assert_tokens(&empty, &[Token::Bytes(b"")]);
|
||||||
assert_de_tokens(&empty, &[Token::ByteBuf(Vec::new())]);
|
assert_de_tokens(&empty, &[Token::ByteBuf(b"")]);
|
||||||
assert_de_tokens(&empty, &[Token::Str("")]);
|
assert_de_tokens(&empty, &[Token::Str("")]);
|
||||||
assert_de_tokens(&empty, &[Token::String(String::new())]);
|
assert_de_tokens(&empty, &[Token::String("")]);
|
||||||
assert_de_tokens(&empty, &[
|
assert_de_tokens(&empty, &[
|
||||||
Token::SeqStart(None),
|
Token::SeqStart(None),
|
||||||
Token::SeqEnd,
|
Token::SeqEnd,
|
||||||
@@ -32,9 +32,9 @@ fn test_byte_buf() {
|
|||||||
|
|
||||||
let buf = ByteBuf::from(vec![65, 66, 67]);
|
let buf = ByteBuf::from(vec![65, 66, 67]);
|
||||||
assert_tokens(&buf, &[Token::Bytes(b"ABC")]);
|
assert_tokens(&buf, &[Token::Bytes(b"ABC")]);
|
||||||
assert_de_tokens(&buf, &[Token::ByteBuf(vec![65, 66, 67])]);
|
assert_de_tokens(&buf, &[Token::ByteBuf(b"ABC")]);
|
||||||
assert_de_tokens(&buf, &[Token::Str("ABC")]);
|
assert_de_tokens(&buf, &[Token::Str("ABC")]);
|
||||||
assert_de_tokens(&buf, &[Token::String("ABC".to_owned())]);
|
assert_de_tokens(&buf, &[Token::String("ABC")]);
|
||||||
assert_de_tokens(&buf, &[
|
assert_de_tokens(&buf, &[
|
||||||
Token::SeqStart(None),
|
Token::SeqStart(None),
|
||||||
Token::SeqSep,
|
Token::SeqSep,
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ macro_rules! declare_error_tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn assert_de_tokens_ignore(ignorable_tokens: &[Token<'static>]) {
|
fn assert_de_tokens_ignore(ignorable_tokens: &[Token]) {
|
||||||
#[derive(PartialEq, Debug, Deserialize)]
|
#[derive(PartialEq, Debug, Deserialize)]
|
||||||
struct IgnoreBase {
|
struct IgnoreBase {
|
||||||
a: i32,
|
a: i32,
|
||||||
@@ -147,7 +147,7 @@ fn assert_de_tokens_ignore(ignorable_tokens: &[Token<'static>]) {
|
|||||||
|
|
||||||
// Embed the tokens to be ignored in the normal token
|
// Embed the tokens to be ignored in the normal token
|
||||||
// stream for an IgnoreBase type
|
// stream for an IgnoreBase type
|
||||||
let concated_tokens : Vec<Token<'static>> = vec![
|
let concated_tokens : Vec<Token> = vec![
|
||||||
Token::MapStart(Some(2)),
|
Token::MapStart(Some(2)),
|
||||||
Token::MapSep,
|
Token::MapSep,
|
||||||
Token::Str("a"),
|
Token::Str("a"),
|
||||||
@@ -215,11 +215,11 @@ declare_tests! {
|
|||||||
test_char {
|
test_char {
|
||||||
'a' => &[Token::Char('a')],
|
'a' => &[Token::Char('a')],
|
||||||
'a' => &[Token::Str("a")],
|
'a' => &[Token::Str("a")],
|
||||||
'a' => &[Token::String("a".to_owned())],
|
'a' => &[Token::String("a")],
|
||||||
}
|
}
|
||||||
test_string {
|
test_string {
|
||||||
"abc".to_owned() => &[Token::Str("abc")],
|
"abc".to_owned() => &[Token::Str("abc")],
|
||||||
"abc".to_owned() => &[Token::String("abc".to_owned())],
|
"abc".to_owned() => &[Token::String("abc")],
|
||||||
"a".to_owned() => &[Token::Char('a')],
|
"a".to_owned() => &[Token::Char('a')],
|
||||||
}
|
}
|
||||||
test_option {
|
test_option {
|
||||||
@@ -767,7 +767,7 @@ declare_tests! {
|
|||||||
|
|
||||||
Token::StructSep,
|
Token::StructSep,
|
||||||
Token::Str("b"),
|
Token::Str("b"),
|
||||||
Token::String("overwritten".to_string()),
|
Token::String("overwritten"),
|
||||||
Token::StructEnd,
|
Token::StructEnd,
|
||||||
],
|
],
|
||||||
StructDefault { a: 100, b: "default".to_string() } => &[
|
StructDefault { a: 100, b: "default".to_string() } => &[
|
||||||
@@ -903,7 +903,7 @@ declare_tests! {
|
|||||||
}
|
}
|
||||||
test_path_buf {
|
test_path_buf {
|
||||||
PathBuf::from("/usr/local/lib") => &[
|
PathBuf::from("/usr/local/lib") => &[
|
||||||
Token::String("/usr/local/lib".to_owned()),
|
Token::String("/usr/local/lib"),
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
test_cstring {
|
test_cstring {
|
||||||
|
|||||||
Reference in New Issue
Block a user