use std::fmt::Debug;
// 定义泛型结构体
struct Container<T>
where
T: Debug,
{
value: T,
}
// 定义过滤函数
fn filter_containers<T>(containers: Vec<Container<T>>, predicate: impl Fn(&T) -> bool) -> Vec<Container<T>>
where
T: Debug,
{
containers.into_iter().filter(|container| (predicate)(&container.value)).collect()
}
fn main() {
let containers: Vec<Container<i32>> = vec![
Container { value: 3 },
Container { value: 7 },
Container { value: 1 },
Container { value: 9 },
];
let filtered = filter_containers(containers, |&num| num > 5);
for container in filtered {
println!("{:?}", container);
}
}