我已经构建了一个ECS(我认为这很简单),并且已经构建了一种将外部数据(实体模板)加载到程序中的机制,我遇到的问题是如何将已经加载的数据转换为类型。
自Serde以来,我一直想去看看怎么做,但我实际上找不到能做到这一点的部分。
我的意思是,当您创建这样的数据结构时:
person:
name: Bob
age: 34
serde能够将其转换为结构:
struct Person {
name: String,
age: i32
}
serde如何将字符串person
转换为类型Person
编辑: 以另一种语言(红宝石)举例:
class Person
attr_accessor :name, :age
def initialize(name:, age:)
@name = name
@age = age
end
end
# pretend type was loaded in from the yaml example from the key
type = 'person'
# pretend person_data was loaded in from the yaml example form the value of the key
person_data = {
name: 'Bob',
age: 34
}
# and now we get the type and then initialize it
# Just like serde does
const_get(type.capitalize).new(person_data)
现在,Rust显然无法在运行时执行此操作或做到这一点,但serde必须执行某些操作以达到相同的结果,"person"
转换为Person
。
答案 0 :(得分:1)
您告诉Serde您想要的类型。它从Derive
实现中了解成员的类型。