我在我的解析器中使用Json
枚举作为数据类型系统,因此我使用ToJson
特征来转换数据,而不是Encodable
和Decodable
它将数据直接转换为字符串。
问题是我无法将#[deriving()]
用于ToJson
特征:
#[deriving(ToJson)]
struct Point {
x: i32,
y: i32
}
由于错误,代码不会编译:
unknown `deriving` trait: `ToJson`
所以我的问题是,
ToJson
和Encodable
之间的区别是什么使得后来的衍生物成为特征?Json
枚举更加用户友好?答案 0 :(得分:1)
我将回答你在标题中提出的问题,而不是你身体中的另外两个问题(See this Meta post for why)
您可以使用deriving
,因为它是语法扩展已经registered with the compiler
此语法扩展包含在编译时构建适当代码的项列表。例如,您可以看到Encodable is defined的方式。我不相信可以在deriving
支持的列表中添加更多项目,只需更改此代码并重新编译即可。