相关疑难解决方法(0)

是否有可能为由都实现了特征的类型组成的任何元组自动实现特征?

假设我有一个

trait Happy {}
Run Code Online (Sandbox Code Playgroud)

我可以Happy为任何我想要的结构实现,例如:

struct Dog;
struct Cat;
struct Alligator;

impl Happy for Dog {}
impl Happy for Cat {}
impl Happy for Alligator {}
Run Code Online (Sandbox Code Playgroud)

现在,我想自动为所有由所有实现该特征的类型组成的元组使用implHappyHappy特征。从直觉上讲,所有快乐的元组也是快乐的。

可以做这样的事情吗?例如,我可以简单地将实现扩展Happy到两种Happy类型的元组:

impl <T, Q> Happy for (T, Q) where T: Happy, Q: Happy {}
Run Code Online (Sandbox Code Playgroud)

结果,这可以完美地编译:

fn f(_: impl Happy) {
}

fn main() {
    f((Dog{}, Alligator{}));
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么能将其推广到任何长度的元组呢?据我所知,Rust中没有可变参数的泛型。有解决方法吗?

tuples variadic traits rust

1
推荐指数
1
解决办法
336
查看次数

标签 统计

rust ×1

traits ×1

tuples ×1

variadic ×1