]> git.proxmox.com Git - rustc.git/blame - src/vendor/serde_derive/src/lib.rs
New upstream version 1.22.1+dfsg1
[rustc.git] / src / vendor / serde_derive / src / lib.rs
CommitLineData
3b2f2976
XL
1// Copyright 2017 Serde Developers
2//
3// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
5// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
6// option. This file may not be copied, modified, or distributed
7// except according to those terms.
8
9//! This crate provides Serde's two derive macros.
10//!
11//! ```rust,ignore
12//! #[derive(Serialize, Deserialize)]
13//! ```
14//!
15//! Please refer to [https://serde.rs/derive.html] for how to set this up.
16//!
17//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
18
ea8adc8c 19#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.15")]
3b2f2976
XL
20
21#![cfg_attr(feature = "cargo-clippy", allow(too_many_arguments))]
22#![cfg_attr(feature = "cargo-clippy", allow(used_underscore_binding))]
23
24// The `quote!` macro requires deep recursion.
25#![recursion_limit = "192"]
26
27extern crate syn;
28#[macro_use]
29extern crate quote;
30
31extern crate serde_derive_internals as internals;
32
33extern crate proc_macro;
34use proc_macro::TokenStream;
35
36#[macro_use]
37mod bound;
38#[macro_use]
39mod fragment;
40
41mod ser;
42mod de;
43
44#[proc_macro_derive(Serialize, attributes(serde))]
45pub fn derive_serialize(input: TokenStream) -> TokenStream {
46 let input = syn::parse_derive_input(&input.to_string()).unwrap();
47 match ser::expand_derive_serialize(&input) {
48 Ok(expanded) => expanded.parse().unwrap(),
49 Err(msg) => panic!(msg),
50 }
51}
52
53#[proc_macro_derive(Deserialize, attributes(serde))]
54pub fn derive_deserialize(input: TokenStream) -> TokenStream {
55 let input = syn::parse_derive_input(&input.to_string()).unwrap();
56 match de::expand_derive_deserialize(&input) {
57 Ok(expanded) => expanded.parse().unwrap(),
58 Err(msg) => panic!(msg),
59 }
60}