【发布时间】:2016-12-24 10:10:42
【问题描述】:
我不想检查一个类型是否具有某种特征,但我希望能够区分,例如一个结构和一个整数。由于结构体和整数都可以实现相同的特征,我不知道如何区分它们。
我想这样做的原因是因为我正在使用 serde_json 将泛型类型转换为 JSON,但我仅希望它成为 JSON Object(当它是struct),但它不应转换为其他任何内容(如 JSON I64)。由于结构体和整数都可以实现 Serialize 特征,因此无法区分它们。
目前,我让进程恐慌,因为它不是可以恢复的错误,但由于我可能在编译时知道这一点,我想知道是否有任何机制可以在编译阶段确定类型。
我想知道如何通过“种类”而不是特征来区分类型。
【问题讨论】:
-
Aochagavia 刚刚向我指出,比较类型并不能解决我的示例中的问题。我仍然希望这个问题能说明问题。我想没有优雅的解决方案,我只需要在运行时进行验证。或者也许可以用程序宏来解决,但这似乎有点过头了。
-
你需要想出一个方法让编译器检查:“我知道这个序列化的实现总是返回对象”。