Как в Rust можно определить функцию, аргументом которой является замыкание с аргументом-замыканием?
Вариант с динамической диспетчеризацией работает, но со статической компилятор сообщает об ошибке «the type of this value must be known in this context»:
fn dyn1(f: &Fn(i32)) {
}
fn dyn2(f: &Fn(&Fn(i32))) {
}
fn stat1<F: Fn(i32)>(f: F) {
}
// ???
fn stat2<F: Fn(i32), F2: Fn(F)>(f: F2) {
}
fn main() {
// x - целое число, динамическая диспетчеризация
dyn1(&|x| { });
// fx - замыкание с целым аргументом, динамическая диспетчеризация
dyn2(&|fx| {fx(1)});
// x - целое число, статическая диспетчеризация
stat1(|x| { });
// fx - замыкание с целым аргументом, статическая диспетчеризация
stat2(|fx| {fx(1)}); // ошибка: the type of this value must be known in this context
}