Невозможно определить тип при передаче None в Option - PullRequest
2 голосов
/ 14 марта 2020

У меня есть что-то вроде этого:

fn my_func(cb: Option<impl FnMut(i32) + 'static>) { ... }

Если я пытаюсь перейти в None, например: my_func(None), я получаю:

cannot infer type for type parameter `impl FnMut(i32) + 'static` declared on the method `my_func`

Я нашел предыдущий пост при этом мне все еще нужно указать тип через None::<T>, используя что-то, что реализует T, и это имеет смысл, но как мне это сделать в этом случае? Я попытался определить пустую функцию, которая соответствует сигнатуре, но это не сработало. Руст жаловался, что я не передавал никаких «типов», и я передавал слишком много «констант».

1 Ответ

2 голосов
/ 14 марта 2020

Вы, вероятно, пытались передать фактическую функцию вместо типа функции. Вы можете использовать None::<fn(i32)>, поскольку fn(i32) - это конкретный тип, который реализует границу FnMut(i32) + 'static.

Ссылка на игровую площадку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...