reflect: stable type path v2#7184
Merged
alice-i-cecile merged 56 commits intobevyengine:mainfrom Jun 5, 2023
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Objective
std::any::type_name.Solution
TypePathtrait for static stable type path/name information.TypePathderive macro.impl_type_pathmacro for implementing internal and foreign types inbevy_reflect.Changelog
TypePathtrait.DynamicTypePathtrait andget_type_pathmethod toReflect.TypePathderive macro.bevy_reflect::impl_type_pathfor implementingTypePathon internal and foreign types inbevy_reflect.bevy_reflect::utility::(Non)GenericTypeInfoCellto(Non)GenericTypedCell<T>which allows us to be generic over bothTypeInfoandTypePath.TypePathis now a supertrait ofAsset,MaterialandMaterial2d.impl_reflect_structneeds a#[type_path = "..."]attribute to be specified.impl_reflect_valueneeds to either specify path starting with a double colon (::core::option::Option) or anin my_crate::foodeclaration.bevy_reflect_derive::ReflectTypePath.Identinbevy_reflect_derivechanged to useReflectTypePath.Migration Guide
Asset,MaterialandMaterial2dnow also need to deriveTypePath.Reflectwill need to implement the newget_type_pathmethod.Open Questions
This PR currently does not migrate any usages ofMigration will be left to a follow-up PR.std::any::type_nameto usebevy_reflect::TypePathto ease the review process. Should it?#[derive(TypePath)]andT: TypePathto satisfy new bounds, mostly when derivingTypeUuid. Should we makeTypePatha supertrait ofTypeUuid? Should we removeTypeUuidin favour ofTypePath?