Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mcarton/rust-derivative
A set of alternative `derive` attributes for Rust
https://github.com/mcarton/rust-derivative
rust
Last synced: about 11 hours ago
JSON representation
A set of alternative `derive` attributes for Rust
- Host: GitHub
- URL: https://github.com/mcarton/rust-derivative
- Owner: mcarton
- License: apache-2.0
- Created: 2016-10-07T14:32:57.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-05-29T05:02:20.000Z (6 months ago)
- Last Synced: 2024-11-01T16:03:35.394Z (12 days ago)
- Topics: rust
- Language: Rust
- Homepage:
- Size: 2.23 MB
- Stars: 420
- Watchers: 6
- Forks: 46
- Open Issues: 44
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# Derivative
[![Crates.io](https://img.shields.io/crates/v/derivative.svg?maxAge=3600)](https://crates.io/crates/derivative)
[![Crates.io](https://img.shields.io/crates/l/derivative.svg?maxAge=3600)](https://github.com/mcarton/rust-derivative#license)
![Continuous integration](https://github.com/mcarton/rust-derivative/workflows/Continuous%20integration/badge.svg)This crate provides a set of alternative customizable `#[derive]` attributes for Rust.
## [Documentation][documentation]
## StabilityThis crate is stable and follows semver. It requires *rustc 1.34 or later* and changing the minimal rustc version will be considered a semver breaking change.
## What it does
```rust
#[derive(Derivative)]
#[derivative(Debug)]
struct Foo {
foo: u8,
#[derivative(Debug="ignore")]
bar: u8,
}// Prints `Foo { foo: 42 }`
println!("{:?}", Foo { foo: 42, bar: 1 });
```Check the [documentation] for more!
## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or )at your option.
## Acknowledgements
This is inspired from how [`serde`] wonderfully handles attributes.
This also takes some code and ideas from `serde` itself.Some tests are directly adapted from `rustc`'s tests.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.[`serde`]: https://crates.io/crates/serde
[documentation]: https://mcarton.github.io/rust-derivative/latest/index.html
[rustc]: https://github.com/rust-lang/rust