Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics 如何为已知的T类型实现反序列化器?_Generics_Rust_Traits_Serde - Fatal编程技术网

Generics 如何为已知的T类型实现反序列化器?

Generics 如何为已知的T类型实现反序列化器?,generics,rust,traits,serde,Generics,Rust,Traits,Serde,我有一个: 结构二重奏 { 课堂:弦乐, 儿童:T } 我知道T是字符串或向量 我可以用某种方式在代码中写T是字符串还是向量 我想为T类型使用serde实现一个反序列化程序,其中包含一个JSON文件,其中包含string或Vec 如何为T型写一个特征?我不想为整个结构编写trait。可能吗?我希望我说得够清楚了。谢谢大家! 您实际上不需要自己实现它。只是告诉编译器T应该是什么 你可以做两件事: 只是从反序列化中派生 [衍生产品系列化] 结构二重奏 { 课堂:弦乐, 儿童:T } 使用带有以下标志

我有一个:

结构二重奏 { 课堂:弦乐, 儿童:T } 我知道T是字符串或向量

我可以用某种方式在代码中写T是字符串还是向量

我想为T类型使用serde实现一个反序列化程序,其中包含一个JSON文件,其中包含string或Vec


如何为T型写一个特征?我不想为整个结构编写trait。可能吗?我希望我说得够清楚了。谢谢大家!

您实际上不需要自己实现它。只是告诉编译器T应该是什么

你可以做两件事:

只是从反序列化中派生

[衍生产品系列化] 结构二重奏 { 课堂:弦乐, 儿童:T } 使用带有以下标志的自定义包装器枚举类型:

[衍生产品系列化] [Serdeuntaged] 枚举子对象{ 单字符串, 多向量 } [衍生产品系列化] 结构二重奏 { 课堂:弦乐, 儿童:儿童,, }
您实际上不需要自己实现它。只是告诉编译器T应该是什么

你可以做两件事:

只是从反序列化中派生

[衍生产品系列化] 结构二重奏 { 课堂:弦乐, 儿童:T } 使用带有以下标志的自定义包装器枚举类型:

[衍生产品系列化] [Serdeuntaged] 枚举子对象{ 单字符串, 多向量 } [衍生产品系列化] 结构二重奏 { 课堂:弦乐, 儿童:儿童,, }
这真的没用。JSON文件包含多个对象,其中子对象可以是String或Vec。如果JSON文件只有这两种类型中的一种,那么您的方法就可以工作,不是吗?@thebude-No,在第一种类型中,您需要在反序列化时标记该类型。在第二个例子中,您已经告诉它可以是其中的任何一个,然后您必须在运行时检查枚举。检查操场,我想你可能想要第二个选项。嗯,好的,我认为这会起作用,但是,假设children字段实际上代表一个数字或数字向量,由String,Vec表示。假设我们想把所有的孩子加起来。我们如何进行?我不知道子元素是单个字符串还是向量。@伙计,你可以为此在子元素枚举中添加一个方法。它不必处理反序列化本身。如果它们是数字,只需使用适当的类型更改内部枚举构造函数。这并没有真正的帮助。JSON文件包含多个对象,其中子对象可以是String或Vec。如果JSON文件只有这两种类型中的一种,那么您的方法就可以工作,不是吗?@thebude-No,在第一种类型中,您需要在反序列化时标记该类型。在第二个例子中,您已经告诉它可以是其中的任何一个,然后您必须在运行时检查枚举。检查操场,我想你可能想要第二个选项。嗯,好的,我认为这会起作用,但是,假设children字段实际上代表一个数字或数字向量,由String,Vec表示。假设我们想把所有的孩子加起来。我们如何进行?我不知道子元素是单个字符串还是向量。@伙计,你可以为此在子元素枚举中添加一个方法。它不必处理反序列化本身。如果它们是数字,只需使用适当的类型更改内部枚举构造函数。这种二元性是存在于数据模型中,还是仅存在于序列化格式中?也就是说,从语义上讲,需要在代码中维护的_字符串和[a_字符串]之间有区别吗?或者您真的只需要一个可以从其中任何一个反序列化的内部Vec吗?这种二元性是存在于数据模型中,还是仅存在于序列化格式中?也就是说,从语义上讲,需要在代码中维护的_字符串和[a_字符串]之间有区别吗?或者你真的只需要一个内部的Vec,它可以从任何一个反序列化?