如何在Rust中获取Trait实现的关联类型?
获取Rust中结构体实现的Trait关联类型
首先是定义的Trait和对应的结构体实现:
trait Trait { type Associated; } struct Struct {} impl Trait for Struct { type Associated = u32; }
你想要获取Struct实现Trait时的关联类型Associated来作为另一个结构体属性的类型,之前尝试的(Struct as Trait)::Associated写法不符合Rust语法,正确的写法是使用<类型 as Trait>::关联类型的语法,有两种常见实现方式:
方法一:在结构体定义中使用where约束
直接在结构体定义里通过where子句确认Struct实现了Trait,然后使用正确的关联类型引用语法:
struct AnotherStruct where Struct: Trait, { prop: <Struct as Trait>::Associated, }
方法二:先定义类型别名再使用
如果需要多次引用这个关联类型,可以先定义一个类型别名,之后直接使用别名:
// 先定义关联类型的别名 type StructAssociated = <Struct as Trait>::Associated; struct AnotherStruct { prop: StructAssociated, }
这两种方式都能正确获取到Struct对应的Associated类型(此处为u32),满足你设置结构体属性类型的需求。
内容的提问来源于stack exchange,提问作者Conaclos
相关产品推荐
相关产品推荐

