【发布时间】:2021-03-11 18:21:46
【问题描述】:
问题是我的泛型类型T 只接受来自u32 的参数,在这种情况下,我试图传递一个我存储在U 中的泛型值。
有没有办法将泛型转换为特定类型?我能做些什么来解决这个问题?
#[derive(Debug)]
struct Cacher<T, U> where T: Fn(u32) -> u32 {
calcular:T,
valor:Option<U>,
}
impl<T, U> Cacher<T, U> where T: Fn(u32) -> u32 {
fn nuevo(calcular:T, valor:U) -> Cacher<T, U> {
Cacher{
calcular,
valor:None,
}
}
fn valor(&mut self, arg:U) -> u32 {
match self.valor {
Some(v) => v,
None => {
let v = (self.calcular)(arg);
self.valor = Some(arg);
v
}
}
}
}
fn generar(intensidad:u32){
let mut resultado = Cacher::nuevo(|num| {
println!("Trabajando");
num
},None);
let res_a = resultado.valor(Some(4));
}
fn main() {
generar(3);
}
【问题讨论】:
标签: function generics rust closures traits