Об этом сообщается в https://users.rust-lang.org/t/giving-names-to-callback-parameters/12877.
pub fn f(callback: fn(len: usize)) {}
Растдок показывает это как:
pub fn f(callback: fn(_: usize))
Это с rustc 1.22.0-nightly (539f2083d 13.09.2017).
Изначально сообщив об этом, я действительно хотел бы попытаться исправить это. Я начну расследование на выходных.
Изменить: поскольку у меня не было времени взглянуть на это, кто-то другой может смело взять на себя ответственность.
@ rust-lang / compiler @petrochenkov Ого, почему мы вообще разрешаем этот синтаксис ?!
Но если мы этого хотим, это должно выполняться как extern {...}
функции (без тел), которые сохраняют Vec
имен, отличных от шаблонов аргументов в функциях с телами.
@eddyb
Ого, почему мы вообще разрешаем этот синтаксис ?!
Для поддержки самодокументируемых аргументов в типах обратного вызова примерно по той же причине, по которой имена поддерживаются во внешних функциях.
Любые шаблоны, кроме _
и IDENT
здесь запрещены той же проверкой, которая запрещает их во внешних функциях, поэтому допустимые шаблоны могут быть понижены до « Vec
имен».
Самый полезный комментарий
Изначально сообщив об этом, я действительно хотел бы попытаться исправить это. Я начну расследование на выходных.
Изменить: поскольку у меня не было времени взглянуть на это, кто-то другой может смело взять на себя ответственность.