As discussed in #1013, serialize_with functions attached to variants receive an argument for each inner value contained within the variant. Internally such a function is wired up to the serializer as if the variant were a newtype variant.
26 lines
852 B
Rust
26 lines
852 B
Rust
// Copyright 2017 Serde Developers
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
#[macro_use]
|
|
extern crate serde_derive;
|
|
|
|
#[derive(Serialize)] //~ ERROR: proc-macro derive panicked
|
|
//~^ HELP: variant `Tuple` cannot have both #[serde(serialize_with)] and a field 0 marked with #[serde(skip_serializing)]
|
|
enum Enum {
|
|
#[serde(serialize_with = "serialize_some_other_variant")]
|
|
Tuple(#[serde(skip_serializing)] String, u8),
|
|
}
|
|
|
|
fn serialize_some_other_variant<S>(_: &String, _: Option<&u8>, _: S) -> StdResult<S::Ok, S::Error>
|
|
where S: Serializer,
|
|
{
|
|
unimplemented!()
|
|
}
|
|
|
|
fn main() { }
|