https://github.com/craftspider/rebound
Rust Runtime Reflection
https://github.com/craftspider/rebound
Last synced: over 1 year ago
JSON representation
Rust Runtime Reflection
- Host: GitHub
- URL: https://github.com/craftspider/rebound
- Owner: CraftSpider
- License: apache-2.0
- Created: 2020-12-05T01:46:15.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-26T17:22:04.000Z (almost 3 years ago)
- Last Synced: 2025-03-14T21:37:13.875Z (over 1 year ago)
- Language: Rust
- Size: 376 KB
- Stars: 10
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# 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.