【发布时间】:2017-06-01 18:12:01
【问题描述】:
我想创建两个特征,SaveSource 和 SaveDestination,这样当某些类型实现这些特征时,函数:
fn save(a, b)
必须为所有a : SaveSource 和b : SaveDestination 实现(并且当向SaveSource 或SaveDestination 添加新类型时,它必须为所有现有SaveDestinations 或@ 实现save 函数987654331@s.
这样的事情可能吗?如果没有,我可以使用什么来获得相同的结果吗?
【问题讨论】:
-
我一定遗漏了你的问题;
fn<A: SaveSource, B: SaveDestination>(a: A, b: B) { ... }似乎已经按照你的要求做了。为什么其中任何一个特征本身都会实现该功能? -
@Shepmaster:我不能为所有类型提供一个函数。所有类型对的实现都不同。
-
如果所有的实现都必须不同,为什么
a和b实现SaveSource/SaveDestination特征很重要? -
设计traits,使通用功能可以仅使用traits上的方法来实现,并将实现的具体细节隐藏在实现之后。
标签: rust traits multiple-dispatch