Como fazer coisas iguais ao `impl Trait` aninhad

function A que leva umfunction B como parâmetro, novamente ofunction B tomafunction C como parâmetro. Eu tento a sintaxe como abaixo, mas isso me dá um erro:

fn a(b: impl Fn(impl Fn() -> ()) -> ()) -> () {
 // ...
}  
error[E0666]: nested `impl Trait` is not allowed
 --> src/main.rs:2:21
  |
2 |     fn a(b: impl Fn(impl Fn() -> ()) -> ()) -> () {
  |             --------^^^^^^^^^^^^^^^-------
  |             |       |
  |             |       nested `impl Trait` here
  |             outer `impl Trait`

Por alguma razão, não consigo usar&dyn palavra-chave:

fn a(b: impl Fn(&dyn Fn() -> ()) -> ()) -> () {
 // ...
} 

Existem outras maneiras de fazer isso?

E eu não sei por quenestedimpl Trait causa um erro.

questionAnswers(1)

yourAnswerToTheQuestion