# Objective This a follow-up to #6894, see https://github.com/bevyengine/bevy/pull/6894#discussion_r1045203113 The goal is to avoid cloning any string when getting a `&TypeRegistration` corresponding to a string which is being deserialized. As a bonus code duplication is also reduced. ## Solution The manual deserialization of a string and lookup into the type registry has been moved into a separate `TypeRegistrationDeserializer` type, which implements `DeserializeSeed` with a `Visitor` that accepts any string with `visit_str`, even ones that may not live longer than that function call. `BorrowedStr` has been removed since it's no longer used. --- ## Changelog - The type `TypeRegistrationDeserializer` has been added, which simplifies getting a `&TypeRegistration` while deserializing a string.
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
[package]
 | 
						|
name = "bevy_reflect"
 | 
						|
version = "0.9.0"
 | 
						|
edition = "2021"
 | 
						|
description = "Dynamically interact with rust types"
 | 
						|
homepage = "https://bevyengine.org"
 | 
						|
repository = "https://github.com/bevyengine/bevy"
 | 
						|
license = "MIT OR Apache-2.0"
 | 
						|
keywords = ["bevy"]
 | 
						|
readme = "README.md"
 | 
						|
 | 
						|
[features]
 | 
						|
default = []
 | 
						|
# Provides Bevy-related reflection implementations
 | 
						|
bevy = ["glam", "smallvec", "bevy_math"]
 | 
						|
# When enabled, allows documentation comments to be accessed via reflection
 | 
						|
documentation = ["bevy_reflect_derive/documentation"]
 | 
						|
 | 
						|
[dependencies]
 | 
						|
# bevy
 | 
						|
bevy_math = { path = "../bevy_math", version = "0.9.0", features = ["serialize"], optional = true }
 | 
						|
bevy_reflect_derive = { path = "bevy_reflect_derive", version = "0.9.0" }
 | 
						|
bevy_utils = { path = "../bevy_utils", version = "0.9.0" }
 | 
						|
bevy_ptr = { path = "../bevy_ptr", version = "0.9.0" }
 | 
						|
 | 
						|
# other
 | 
						|
erased-serde = "0.3"
 | 
						|
downcast-rs = "1.2"
 | 
						|
parking_lot = "0.12.1"
 | 
						|
thiserror = "1.0"
 | 
						|
once_cell = "1.11"
 | 
						|
serde = "1"
 | 
						|
smallvec = { version = "1.6", features = ["serde", "union", "const_generics"], optional = true }
 | 
						|
glam = { version = "0.22", features = ["serde"], optional = true }
 | 
						|
 | 
						|
[dev-dependencies]
 | 
						|
ron = "0.8.0"
 | 
						|
rmp-serde = "1.1"
 | 
						|
bincode = "1.3"
 | 
						|
 | 
						|
[[example]]
 | 
						|
name = "reflect_docs"
 | 
						|
path = "examples/reflect_docs.rs"
 | 
						|
required-features = ["documentation"]
 |