“未知的特征ToJson”;什么使得特质可以推导出来?

时间:2014-12-20 09:35:45

标签: json rust

我在我的解析器中使用Json枚举作为数据类型系统,因此我使用ToJson特征来转换数据,而不是EncodableDecodable它将数据直接转换为字符串。

问题是我无法将#[deriving()]用于ToJson特征:

#[deriving(ToJson)]
struct Point {
  x: i32,
  y: i32
}

由于错误,代码不会编译:

unknown `deriving` trait: `ToJson`

所以我的问题是,

  1. ToJsonEncodable之间的区别是什么使得后来的衍生物成为特征?
  2. 是否可以使ToJson派生,然后从自定义结构转换为Json枚举更加用户友好?

1 个答案:

答案 0 :(得分:1)

我将回答你在标题中提出的问题,而不是你身体中的另外两个问题(See this Meta post for why

您可以使用deriving,因为它是语法扩展已经registered with the compiler

此语法扩展包含在编译时构建适当代码的项列表。例如,您可以看到Encodable is defined的方式。我不相信可以在deriving支持的列表中添加更多项目,只需更改此代码并重新编译即可。