mirror of
https://github.com/serde-rs/serde.git
synced 2025-09-29 22:11:09 +00:00
Merge pull request #848 from serde-rs/emptyarray
Relax impls for [T; 0]
This commit is contained in:
commit
5415abf80b
@ -625,9 +625,7 @@ impl<A> ArrayVisitor<A> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, T> Visitor<'de> for ArrayVisitor<[T; 0]>
|
impl<'de, T> Visitor<'de> for ArrayVisitor<[T; 0]> {
|
||||||
where T: Deserialize<'de>
|
|
||||||
{
|
|
||||||
type Value = [T; 0];
|
type Value = [T; 0];
|
||||||
|
|
||||||
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
|
||||||
@ -642,9 +640,8 @@ impl<'de, T> Visitor<'de> for ArrayVisitor<[T; 0]>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'de, T> Deserialize<'de> for [T; 0]
|
// Does not require T: Deserialize<'de>.
|
||||||
where T: Deserialize<'de>
|
impl<'de, T> Deserialize<'de> for [T; 0] {
|
||||||
{
|
|
||||||
fn deserialize<D>(deserializer: D) -> Result<[T; 0], D::Error>
|
fn deserialize<D>(deserializer: D) -> Result<[T; 0], D::Error>
|
||||||
where D: Deserializer<'de>
|
where D: Deserializer<'de>
|
||||||
{
|
{
|
||||||
|
@ -143,6 +143,16 @@ impl<T> Serialize for PhantomData<T> {
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Does not require T: Serialize.
|
||||||
|
impl<T> Serialize for [T; 0] {
|
||||||
|
#[inline]
|
||||||
|
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||||
|
where S: Serializer
|
||||||
|
{
|
||||||
|
try!(serializer.serialize_seq_fixed_size(0)).end()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! array_impls {
|
macro_rules! array_impls {
|
||||||
($len:expr) => {
|
($len:expr) => {
|
||||||
impl<T> Serialize for [T; $len] where T: Serialize {
|
impl<T> Serialize for [T; $len] where T: Serialize {
|
||||||
@ -160,7 +170,6 @@ macro_rules! array_impls {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
array_impls!(0);
|
|
||||||
array_impls!(1);
|
array_impls!(1);
|
||||||
array_impls!(2);
|
array_impls!(2);
|
||||||
array_impls!(3);
|
array_impls!(3);
|
||||||
|
@ -295,6 +295,11 @@ fn test_gen() {
|
|||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
#[serde(deny_unknown_fields)]
|
#[serde(deny_unknown_fields)]
|
||||||
struct UnitDenyUnknown;
|
struct UnitDenyUnknown;
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
struct EmptyArray {
|
||||||
|
empty: [X; 0],
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user