#derive

macro nanoserde-derive

Fork of makepad-tinyserde derive without any external dependencies

22 releases

0.1.21 Sep 1, 2023
0.1.20 Jul 22, 2023
0.1.19 Nov 12, 2022
0.1.18 Jun 28, 2021
0.1.12 Jul 20, 2020

#1029 in Procedural macros

Download history 1161/week @ 2023-07-17 1607/week @ 2023-07-24 1155/week @ 2023-07-31 1466/week @ 2023-08-07 1509/week @ 2023-08-14 1816/week @ 2023-08-21 1503/week @ 2023-08-28 2000/week @ 2023-09-04 1503/week @ 2023-09-11 1791/week @ 2023-09-18 1883/week @ 2023-09-25 2050/week @ 2023-10-02 2226/week @ 2023-10-09 1988/week @ 2023-10-16 2864/week @ 2023-10-23 2385/week @ 2023-10-30

9,729 downloads per month
Used in 31 crates (via nanoserde)

MIT license

105KB
3K SLoC

nanoserde

Github Actions Crates.io version Documentation Discord chat

Fork of https://crates.io/crates/makepad-tinyserde with all the dependencies removed. No more syn, proc_macro2 or quote in the build tree!

> cargo tree
nanoserde v0.1.0 (/../nanoserde)
└── nanoserde-derive v0.1.0 (/../nanoserde/derive)

Example:

use nanoserde::{DeJson, SerJson};

#[derive(Clone, Debug, Default, DeJson, SerJson)]
pub struct Property {
    pub name: String,
    #[nserde(default)]
    pub value: String,
    #[nserde(rename = "type")]
    pub ty: String,
}

For more examples take a look on tests

Features support matrix:

Feature json bin ron toml
serialization yes yes yes no
deserialization yes yes yes no
container: Struct yes yes yes no
container: Tuple Struct no yes yes no
container: Enum yes yes yes no
field: std::collections::HashMap yes yes yes no
field: std::vec::Vec yes yes yes no
field: Option yes yes yes no
field: i*/f*/String/T: De*/Ser* yes yes yes no
field attribute: #[nserde(default)] yes no yes no
field attribute: #[nserde(rename = "")] yes yes yes no
field attribute: #[nserde(proxy = "")] no yes no no
container attribute: #[nserde(default)] yes no yes no
container attribute: #[nserde(rename = "")] yes yes yes no
container attribute: #[nserde(proxy = "")] yes yes no no

Dependencies

~210KB