Então eu tenho essa situação , onde Rust não pode inferir os argumentos de tipo genérico para uma função, que usa o opcional Fn como parâmetro. Ao passar None
para ele, parece que os argumentos do tipo genérico estão obsoletos, mas Rust precisa saber seus valores para compilar e não sei o que dizer a ele. Eu tentei foo::<(), ()>(calculation_result, None)
, mas isso não funciona.
Alguém sabe como posso chamar essa foo
função ao passar None
em vez de fechar ela? Existe um tipo fictício que eu possa especificar ou algo assim?
Este é um problema conhecido que afetou muitas bibliotecas no ecossistema, como Gtk :
Atualmente, a melhor solução que conheço é declarar uma constante com os
None
valores relevantes de um tipo fictício, como aGtk
caixa que vinculei acima.No seu caso particular, o tipo mais fácil de usar
F
é básicofn()
e a sintaxe para anotarNone
é um turbo-fish como:Option::<fn()>::None
.O problema é chamar uma função com um parâmetro não especificado.
Você deve especificar manualmente o tipo. Tenha em mente que Option é otimizado para o tamanho de Box (não sizeof Box + 1) e não é alocado no caso None.