Macro bevy::reflect::impl_reflect_struct
impl_reflect_struct!() { /* proc-macro */ }
Expand description
A replacement for #[derive(Reflect)]
to be used with foreign types which
the definitions of cannot be altered.
This macro is an alternative to impl_reflect_value!
and impl_from_reflect_value!
which implement foreign types as Value types. Note that there is no impl_from_reflect_struct
,
as this macro will do the job of both. This macro implements them as Struct
types,
which have greater functionality. The type being reflected must be in scope, as you cannot
qualify it in the macro as e.g. bevy::prelude::Vec3
.
It is necessary to add a #[type_path = "my_crate::foo"]
attribute to all types.
It may be necessary to add #[reflect(Default)]
for some types, specifically non-constructible
foreign types. Without Default
reflected for such types, you will usually get an arcane
error message and fail to compile. If the type does not implement Default
, it may not
be possible to reflect without extending the macro.
Example
Implementing Reflect
for bevy::prelude::Vec3
as a struct type:
use bevy::prelude::Vec3;
impl_reflect_struct!(
#[reflect(PartialEq, Serialize, Deserialize, Default)]
#[type_path = "bevy::prelude"]
struct Vec3 {
x: f32,
y: f32,
z: f32
}
);