Compare commits

...

5 Commits

Author SHA1 Message Date
David Tolnay 69dd3215f4 Release 1.0.30 2018-03-12 11:44:50 -07:00
David Tolnay a7a7a31809 Merge pull request #1175 from daboross/fix-borrowed-cow-bytes
Fix borrowed Cow<'_, [u8]> deserializing as str.
2018-03-12 11:44:14 -07:00
David Ross af9996aa9a Fix borrowed Cow<'_, [u8]> deserializing as str.
This changes the deserialize implementation for a borrowed Cow<[u8]>
to specifically request a byte slice, rather than a borrowed string.

The old behavior breaks any program which relies on data being
deserialized the same way as it was serialized and uses Cow<[u8]>.
In serde_json, it just wouldn't deserialize. In bincode, it
deserialized normally unless the bytes were invalid UTF8.

Fixes https://github.com/TyOverby/bincode/issues/231.
2018-03-12 11:26:11 -07:00
David Tolnay 0d4d47c398 Release 1.0.29 2018-03-09 00:24:08 -08:00
David Tolnay 30361ac6d0 Clean up workaround that required too many parentheses
The issue has been fixed in the compiler and these extra call site parentheses
are no longer required.
2018-03-09 00:22:27 -08:00
14 changed files with 15 additions and 39 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "serde"
version = "1.0.28" # remember to update html_root_url
version = "1.0.30" # remember to update html_root_url
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
license = "MIT/Apache-2.0"
description = "A generic serialization/deserialization framework"
+1 -1
View File
@@ -79,7 +79,7 @@
////////////////////////////////////////////////////////////////////////////////
// Serde types in rustdoc of other crates get linked to here.
#![doc(html_root_url = "https://docs.rs/serde/1.0.28")]
#![doc(html_root_url = "https://docs.rs/serde/1.0.30")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
// Unstable functionality only if the user asks for it. For tracking and
+1 -1
View File
@@ -188,7 +188,7 @@ where
}
}
deserializer.deserialize_str(CowBytesVisitor)
deserializer.deserialize_bytes(CowBytesVisitor)
}
pub mod size_hint {
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "serde_derive"
version = "1.0.28" # remember to update html_root_url
version = "1.0.30" # remember to update html_root_url
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
license = "MIT/Apache-2.0"
description = "Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
+5 -11
View File
@@ -566,16 +566,14 @@ fn deserialize_seq(
}
});
// FIXME: parentheses around field values are because of
// https://github.com/rust-lang/rust/issues/47311
let mut result = if is_struct {
let names = fields.iter().map(|f| &f.ident);
quote_spanned! {Span::call_site()=>
#type_path { #( #names: (#vars) ),* }
#type_path { #( #names: #vars ),* }
}
} else {
quote_spanned! {Span::call_site()=>
#type_path ( #((#vars)),* )
#type_path ( #(#vars),* )
}
};
@@ -718,9 +716,7 @@ fn deserialize_newtype_struct(type_path: &Tokens, params: &Parameters, field: &F
}
};
// FIXME: parentheses around field values are because of
// https://github.com/rust-lang/rust/issues/47311
let mut result = quote_spanned!(Span::call_site()=> #type_path((#value)));
let mut result = quote_spanned!(Span::call_site()=> #type_path(#value));
if params.has_getter {
let this = &params.this;
result = quote! {
@@ -2054,15 +2050,13 @@ fn deserialize_map(
}
});
// FIXME: parentheses around field values are because of
// https://github.com/rust-lang/rust/issues/47311
let result = fields_names.iter().map(|&(field, ref name)| {
let ident = field.ident.expect("struct contains unnamed fields");
if field.attrs.skip_deserializing() {
let value = Expr(expr_is_missing(field, cattrs));
quote_spanned!(Span::call_site()=> #ident: (#value))
quote_spanned!(Span::call_site()=> #ident: #value)
} else {
quote_spanned!(Span::call_site()=> #ident: (#name))
quote_spanned!(Span::call_site()=> #ident: #name)
}
});
+1 -1
View File
@@ -22,7 +22,7 @@
//!
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.28")]
#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.30")]
#![cfg_attr(feature = "cargo-clippy", allow(enum_variant_names, redundant_field_names,
too_many_arguments, used_underscore_binding))]
// The `quote!` macro requires deep recursion.
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "serde_test"
version = "1.0.28" # remember to update html_root_url
version = "1.0.30" # remember to update html_root_url
authors = ["Erick Tryzelaar <erick.tryzelaar@gmail.com>", "David Tolnay <dtolnay@gmail.com>"]
license = "MIT/Apache-2.0"
description = "Token De/Serializer for testing De/Serialize implementations"
+1 -1
View File
@@ -155,7 +155,7 @@
//! # }
//! ```
#![doc(html_root_url = "https://docs.rs/serde_test/1.0.28")]
#![doc(html_root_url = "https://docs.rs/serde_test/1.0.30")]
#![cfg_attr(feature = "cargo-clippy", deny(clippy, clippy_pedantic))]
// Whitelisted clippy lints
#![cfg_attr(feature = "cargo-clippy", allow(float_cmp))]
-4
View File
@@ -9,10 +9,6 @@
#![feature(lang_items, start, compiler_builtins_lib)]
#![no_std]
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(double_parens))]
extern crate libc;
extern crate compiler_builtins;
-4
View File
@@ -8,10 +8,6 @@
#![cfg_attr(feature = "cargo-clippy", allow(cast_lossless))]
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(double_parens))]
#[macro_use]
extern crate serde_derive;
+1 -3
View File
@@ -6,9 +6,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(decimal_literal_representation, double_parens))]
#![cfg_attr(feature = "cargo-clippy", allow(decimal_literal_representation))]
#[macro_use]
extern crate serde_derive;
-4
View File
@@ -13,10 +13,6 @@
#![deny(warnings)]
#![cfg_attr(feature = "unstable", feature(non_ascii_idents))]
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(double_parens))]
#[macro_use]
extern crate serde_derive;
+1 -3
View File
@@ -8,9 +8,7 @@
#![deny(trivial_numeric_casts)]
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(double_parens, redundant_field_names))]
#![cfg_attr(feature = "cargo-clippy", allow(redundant_field_names))]
#[macro_use]
extern crate serde_derive;
+1 -3
View File
@@ -6,9 +6,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// https://github.com/rust-lang/rust/issues/47311
#![allow(unused_parens)]
#![cfg_attr(feature = "cargo-clippy", allow(double_parens, redundant_field_names))]
#![cfg_attr(feature = "cargo-clippy", allow(redundant_field_names))]
#[macro_use]
extern crate serde_derive;