如何简化Rust泛型结构体ManyRequirements的impl重复trait约束?
Rust 泛型结构体impl块的简洁写法疑问
我定义了一个带有多个trait约束的泛型结构体:
struct ManyRequirements<T> where T:Ord, T:Copy, T:Clone, T:Iterator, T:Display { something: T }
想给这个结构体编写不依赖具体T的通用方法(比如new),但尝试了两种写法都触发编译错误:
第一种写法:
impl ManyRequirements { fn new() { } }
第二种写法:
impl<T> ManyRequirements<T> { fn new() { } }
错误信息如下(每个未满足的trait都会重复出现类似提示):
the trait bound
T: Ordis not satisfied
the traitOrdis not implemented forT
目前只有重复所有trait约束的写法能正常编译:
impl <T> ManyRequirements<T> where T:Ord, T:Copy, T:Clone, T:Iterator, T:Display { }
想问下有没有更简洁的写法?比如类似下面这样,用占位符表示“T是符合结构体约束的任意类型”?
impl <_> ManyRequirements<_> { }
内容的提问来源于stack exchange,提问作者Jay Mehta
相关产品推荐
相关产品推荐

