我可以将两种类型与实现相关联吗?

时间:2017-02-01 20:32:31

标签: types rust

我在库中有一个公共特征,预计会使用两个结构来实现它。其中一个结构是公开的,预计由程序员建立,此时他们会根据他们的选择从特征中调用方法。

然而,在此过程中,公共特征将使用另一个结构(私有)和实现来完成公共实现的工作。所有这些都是“幕后”,但我想让程序员选择在引擎盖下选择使用哪种策略。

我可以通过将实现与多种类型相关联来实现这一目标吗?

Contrived Example

pub struct Court<T> {}

pub struct Field<T> {}

struct Football<T> {}

impl<T> Football<T> {}

struct SoccerBall<T> {}

impl<T> SoccerBall<T> {}

struct LacrosseBall<T> {}

impl<T> LacrosseBall<T> {}

struct Baseball<T> {}

impl<T> Baseball<T>{}

impl<T> Match<T> for Field<T>, Football<T> {}

impl<T> Match<T> for Field<T>, SoccerBall<T> {}

impl<T> Match<T> for Field<T>, LacrosseBall<T> {}

impl<T> Match<T> for Field<T>, Baseball<T> {}

impl<T> Match<T> for Court<T>, LacrosseBall<T>{}

在这种情况下,我可能想要在不同的比赛区域实施一个用不同球打过的Match。首先,我想让程序员有机会选择一个球,但我不想公开公开不需要的球方法。

这个人为的例子可能看起来像是邀请添加Sport类型的解决方案,但这是该示例的工件,如果我可以逃脱它,我想避免添加更多类型。< / p>

0 个答案:

没有答案