# Rebound
[](https://crates.io/crates/rebound)
[](https://docs.rs/rebound)
[](./LICENSE-APACHE)
A powerful, lifetime-safe runtime reflection system for Rust. **Heavily WIP, requires nightly**
## Goals
Rebound aims to provide high-power runtime reflection. This includes two main features:
- Reflect as much as possible. This means rebound is willing to trade some performance, code size, or simplicity
in the name of increased power.
- Follow Rust's lifetime and memory safety guarantees. As long as you are using the safe API,
rebound should never cause segfaults or any other data race.
## Features
Rebound currently provides these features:
- A `#[rebound]` proc macro, which can be applied to any item rebound supports reflecting
- Support for these items
- Structs
- Enums
- Unions
- All three kinds of generics
- Impl Blocks
- Support for these things is being worked on / considered
- Traits
- Top-level Functions
- Statics
- Consts
- The `Value` type, an untyped smart pointer with lifetime safety.
- Reflection of all primitive types, including the `!` type
- Reflection of the `core` and `std` builtin libraries, with feature-gates
## License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
### 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.