Возможно ли иметь замыкание в структуре с аргументами generi c и типом возврата? - PullRequest
0 голосов
/ 25 марта 2020

Можно ли заменить приведенное ниже замыкание обобщенными c аргументами и типом возвращаемого значения?

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

Например, можно ли сделать Fn<U, V>(x: U) -> V в этой структуре и создать конструктор?

1 Ответ

3 голосов
/ 25 марта 2020

Может быть вот так (указание фантомного типа для других неиспользуемых параметров типа):

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