Derive Macro bevy_reflect_derive::FromReflect

source ·
#[derive(FromReflect)]
{
    // Attributes available to this derive:
    #[reflect]
}
Expand description

Derives the FromReflect trait.

Field Attributes

#[reflect(ignore)]

The #[reflect(ignore)] attribute is shared with the #[derive(Reflect)] macro and has much of the same functionality in that it denotes that a field will be ignored by the reflection API.

The only major difference is that using it with this derive requires that the field implements Default. Without this requirement, there would be no way for FromReflect to automatically construct missing fields that have been ignored.

#[reflect(default)]

If a field cannot be read, this attribute specifies a default value to be used in its place.

By default, this attribute denotes that the field’s type implements Default. However, it can also take in a path string to a user-defined function that will return the default value. This takes the form: #[reflect(default = "path::to::my_function")] where my_function is a parameterless function that must return some default value for the type.

Specifying a custom default can be used to give different fields their own specialized defaults, or to remove the Default requirement on fields marked with #[reflect(ignore)]. Additionally, either form of this attribute can be used to fill in fields that are simply missing, such as when converting a partially-constructed dynamic type to a concrete one.