面试题答案
一键面试-
设计思路:
- 定义
Validate
特性,该特性需要一个关联函数用于验证。 - 为了处理泛型
T
,我们使用impl<T>
语法为不同类型的T
实现Validate
特性。 - 对于可能存在的生命周期问题,如果
T
包含生命周期参数,我们需要在impl
块中正确声明这些生命周期参数。
- 定义
-
关键代码片段:
// 定义泛型结构体
struct Container<T> {
value: T,
}
// 定义Validate特性
trait Validate {
fn validate(&self) -> bool;
}
// 为字符串类型实现Validate特性
impl Validate for Container<&str> {
fn validate(&self) -> bool {
self.value.len() > 5
}
}
// 示例使用
fn main() {
let container1 = Container { value: "hello world" };
let container2 = Container { value: "hi" };
println!("container1 valid: {}", container1.validate());
println!("container2 valid: {}", container2.validate());
}
上述代码定义了Container
泛型结构体,接着定义了Validate
特性,并为Container<&str>
类型实现了Validate
特性,以检查字符串长度是否大于5。如果T
有其他更复杂的生命周期情况,比如T: 'a
,则impl<'a, T: 'a> Validate for Container<T>
这样在impl
块中声明生命周期参数即可处理。