#reflection #run-time #lifetime #memory #safety #proc-macro #safe

nightly no-std rebound

Full runtime reflection for Rust, with lifetime safety

4 releases

0.4.4 Sep 6, 2022
0.4.3 Dec 3, 2021
0.3.0 Dec 3, 2021
0.2.0 Dec 31, 2020
0.0.1 Dec 5, 2020

#331 in Memory management

MIT/Apache

125KB
3K SLoC

Rebound

crates.io Documentation MIT/Apache-2 licensed

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

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.

Dependencies

~2.5MB
~53K SLoC