我在库中有一个公共特征,预计会使用两个结构来实现它。其中一个结构是公开的,预计由程序员建立,此时他们会根据他们的选择从特征中调用方法。
然而,在此过程中,公共特征将使用另一个结构(私有)和实现来完成公共实现的工作。所有这些都是“幕后”,但我想让程序员选择在引擎盖下选择使用哪种策略。
我可以通过将实现与多种类型相关联来实现这一目标吗?
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>