Some rearranging of serialize/deserialize code #230
Merged
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.
The following changes are made, some of which are breaking.
Canon
is moved out ofRegistry
so that it's now a free-standing type. That way there's a clear separation of concerns, between handlingEntity
and handling component types.with_entity_serializer
methods onWorldSerializer
andWorldDeserializer
are consequently removed, whileWorld::as_serializable
andRegistry::as_deserialize(_into_world)
take an extraEntitySerializer
argument.Canon
now handles its locking internally, instead of having to be wrapped in a lock.CustomEntitySerializer
's methods take&self
, possible due to the change above.EntitySerializer
now has a blanket implementation for anything that implementsCustomEntitySerializer
.run_as_context
logic is replaced with thescoped-tls-hkt
crate, which does this more cleanly and is better-tested.ENTITY_SERIALIZER
variable, introduced by the change above, is made public and documented. This fixes Allow serializing/deserializing Entity outside World #228.I think that the
EntitySerializer
andCustomEntitySerializer
traits could do with better names, but I've held off on that as I can't think of names that really work well.