面试题答案
一键面试// 定义泛型trait Container
trait Container {
type Item;
}
// 定义trait Processable
trait Processable {
fn process(&self, container: &impl Container<Item = impl Clone>);
}
// 定义结构体实现Container trait,Item类型为String
struct MyContainer {
items: Vec<String>,
}
impl Container for MyContainer {
type Item = String;
}
// 定义一个结构体实现Processable trait
struct Processor;
impl Processable for Processor {
fn process(&self, container: &impl Container<Item = impl Clone>) {
if let Some(item) = container.items.first() {
let cloned_item = item.clone();
println!("Processed item: {}", cloned_item);
}
}
}
你可以这样使用:
fn main() {
let my_container = MyContainer {
items: vec!["Hello".to_string(), "World".to_string()],
};
let processor = Processor;
processor.process(&my_container);
}