reflect-steroids

Crates.ioreflect-steroids
lib.rsreflect-steroids
version0.2.0
sourcesrc
created_at2022-08-12 10:49:40.718605
updated_at2022-08-25 12:06:03.104236
descriptionExtensions for bevy_reflect enabling reflection through arbitrary trait objects
homepagehttps://docs.rs/reflect-steroids/latest/reflect_steroids
repositoryhttps://github.com/simonask/reflect-steroids
max_upload_size
id643946
size88,592
Simon Ask (simonask)

documentation

README

Bevy Reflection on Steroids

A series of supplementary extensions to the bevy_reflect crate that powers aspects of the Bevy game engine.

bevy_reflect provides is a general reflection framework for Rust structs, with rudimentary support for traits.

Highlights

  • Integrates seamlessly with bevy_reflect.
  • Includes a facility to register types globally without explicitly calling TypeRegistry::register(). This feature is gated behind the "inventory" crate feature, enabled by default. See [enable_global_type_registration].
  • Includes a facility to perform generic dynamic casts between trait objects, patching a hole in the Rust language (similar to C++ dynamic_cast). See the [Cast] trait.
  • Includes the equivalent of downcast-rs, but using the Reflect trait instead of Any. See [DowncastReflect].
  • Serialization and deserialization of opaque trait objects (similar to typetag).

This crate provides a much more intuitive and user-friendly way of interacting with reflected types through arbitrary trait objects.

By implementing [DynamicTrait] for dyn MyTrait, reflection is made available to all dynamic trait object references of that type. The only requirements are that the trait has [DowncastReflect] as a supertrait, and that a call to the macro impl_dynamic_trait!(MyTrait, ReflectMyTrait) is present in the code.

Commit count: 8

cargo fmt