# nanoserde
[](https://github.com/not-fl3/nanoserde/actions?query=workflow%3A)
[](https://crates.io/crates/nanoserde)
[](https://docs.rs/nanoserde)
[](https://discord.gg/WfEp6ut)
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:
```rust
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](/tests)
## Features support matrix:
| 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 |