code review results
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
This commit is contained in:
@@ -17,6 +17,7 @@ use bevy::{
|
||||
};
|
||||
use bincode::Options as _;
|
||||
use serde::de::DeserializeSeed;
|
||||
|
||||
use crate::persistence::error::{
|
||||
PersistenceError,
|
||||
Result,
|
||||
@@ -103,20 +104,23 @@ pub fn serialize_component(
|
||||
type_registry: &TypeRegistry,
|
||||
) -> Result<Vec<u8>> {
|
||||
let serializer = ReflectSerializer::new(component, type_registry);
|
||||
bincode::options().serialize(&serializer)
|
||||
bincode::options()
|
||||
.serialize(&serializer)
|
||||
.map_err(PersistenceError::from)
|
||||
}
|
||||
|
||||
/// Serialize a component when the type is known (more efficient for bincode)
|
||||
///
|
||||
/// This uses `TypedReflectSerializer` which doesn't include type path information,
|
||||
/// making it compatible with `TypedReflectDeserializer` for binary formats.
|
||||
/// This uses `TypedReflectSerializer` which doesn't include type path
|
||||
/// information, making it compatible with `TypedReflectDeserializer` for binary
|
||||
/// formats.
|
||||
pub fn serialize_component_typed(
|
||||
component: &dyn Reflect,
|
||||
type_registry: &TypeRegistry,
|
||||
) -> Result<Vec<u8>> {
|
||||
let serializer = TypedReflectSerializer::new(component, type_registry);
|
||||
bincode::options().serialize(&serializer)
|
||||
bincode::options()
|
||||
.serialize(&serializer)
|
||||
.map_err(PersistenceError::from)
|
||||
}
|
||||
|
||||
@@ -159,17 +163,18 @@ pub fn deserialize_component(
|
||||
|
||||
/// Deserialize a component when the type is known
|
||||
///
|
||||
/// Uses `TypedReflectDeserializer` which is more efficient for binary formats like bincode
|
||||
/// when the component type is known at deserialization time.
|
||||
/// Uses `TypedReflectDeserializer` which is more efficient for binary formats
|
||||
/// like bincode when the component type is known at deserialization time.
|
||||
pub fn deserialize_component_typed(
|
||||
bytes: &[u8],
|
||||
component_type: &str,
|
||||
type_registry: &TypeRegistry,
|
||||
) -> Result<Box<dyn PartialReflect>> {
|
||||
let registration = type_registry.get_with_type_path(component_type)
|
||||
.ok_or_else(|| PersistenceError::Deserialization(
|
||||
format!("Type {} not registered", component_type)
|
||||
))?;
|
||||
let registration = type_registry
|
||||
.get_with_type_path(component_type)
|
||||
.ok_or_else(|| {
|
||||
PersistenceError::Deserialization(format!("Type {} not registered", component_type))
|
||||
})?;
|
||||
|
||||
let mut deserializer = bincode::Deserializer::from_slice(bytes, bincode::options());
|
||||
let reflect_deserializer = TypedReflectDeserializer::new(registration, type_registry);
|
||||
|
||||
Reference in New Issue
Block a user