面试题答案
一键面试// 定义一些特征
trait Feature1 {}
trait Feature2 {}
// 定义自定义复杂结构体
struct ComplexStruct {}
// 为结构体实现特征
impl Feature1 for ComplexStruct {}
impl Feature2 for ComplexStruct {}
fn main() {
let instance = ComplexStruct;
// 使用高级匹配模式
match instance {
_ if instance.is::<Feature1>() && instance.is::<Feature2>() => {
println!("实例同时实现了Feature1和Feature2");
}
_ if instance.is::<Feature1>() => {
println!("实例仅实现了Feature1");
}
_ if instance.is::<Feature2>() => {
println!("实例仅实现了Feature2");
}
_ => {
println!("实例未实现任何预期特征");
}
}
}
解释:
- 首先定义了两个特征
Feature1
和Feature2
。 - 接着定义了自定义的复杂结构体
ComplexStruct
,并为它实现了这两个特征。 - 在
main
函数中,创建了结构体实例instance
。 - 使用
match
语句结合is::<Trait>()
方法,这是Rust用于检查类型是否实现了某个特征的方式,来根据结构体实例所实现的特征状态进行不同的逻辑处理。