https://github.com/ppmathis/const-enum
Constant From trait implementation for Rust enums with repr type
https://github.com/ppmathis/const-enum
Last synced: 11 months ago
JSON representation
Constant From trait implementation for Rust enums with repr type
- Host: GitHub
- URL: https://github.com/ppmathis/const-enum
- Owner: ppmathis
- License: apache-2.0
- Created: 2021-12-28T19:40:11.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-28T19:47:51.000Z (over 4 years ago)
- Last Synced: 2025-03-05T05:30:47.245Z (over 1 year ago)
- Language: Rust
- Size: 10.7 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# const-enum
[](https://github.com/ppmathis/const-enum)
[](https://crates.io/crates/const-enum)
[](https://docs.rs/const-enum)
[](https://github.com/ppmathis/const-enum/actions)
This crate providers a procedural derive macro `ConstEnum`, which will provide a `const` implementation of the `From`
trait for converting an `enum` based on their `repr` type.
Unfortunately Rust Stable does not currently contain all required features for implementing this crate.
To use of this library, you must use a recent Rust Nightly release and add the following feature flags to your crate root:
```rust
#![feature(const_trait_impl)] // always required
```
Here is a simple example of how this library can be used:
```rust
#![feature(const_trait_impl)]
use const_enum::ConstEnum;
#[derive(Copy, Clone, Debug, Eq, PartialEq, ConstEnum)]
#[repr(u8)]
enum Test {
A = 0b010,
B = 0b100,
C = 0b001
}
pub fn main() {
println!("{:?}", Test::from(0b010 as u8));
println!("{:?}", u8::from(Test::A));
}
```
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### 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.