首页 > 解决方案 > 是否可以在具有泛型参数和返回类型的结构中使用闭包?

问题描述

是否可以用通用参数和返回类型替换下面的闭包?

struct HMHolder<T>
where
    T: Fn(u32) -> u32,
{
    calculation: T,
    value: HashMap<String, i32>,
}

例如,我可以Fn<U, V>(x: U) -> V在该结构中创建并创建一个构造函数吗?

标签: genericsrustclosures

解决方案


也许像这样(为其他未使用的类型参数指定一个幻像类型):

struct HMHolder<I, R, Calculation>
where
    Calculation: Fn(I) -> R,
{
    calculation: Calculation,
    value: std::collections::HashMap<String, i32>,
    marker: std::marker::PhantomData<(I, R)>,
}

推荐阅读