Trait 中的函数 return 类型重载

Function return type overloading in Trait

我正在编写一个特征函数,输出标量 T 或 NdArray ArrayBase<ViewRepr<&T>, I>。我知道 Rust 不支持函数重载。我遇到过不同的解决方案,例如输出元组(第一个元素是标量,第二个是数组)。你觉得这个解决方案在 Rust 中是惯用的吗?或者您知道更好的解决方法吗?

我目前的解决方案是创建两个不同的特征,一个实现输出标量的函数,另一个实现输出数组的特征中的函数。

我正在寻找更好的解决方案,因为它会大大减轻我的代码库。

您可以在输出特征中使用 associated type

pub trait MyTrait {
    type Output;

    fn execute(&self) -> Self::Output;
}

...
struct MyCompute;

impl MyTrait for MyCompute {
    type Output = u64;

    fn compute(&self) -> Self::Output { ... }
}