Я хотел понять поведение атрибута #[inline]
в Rust, поэтому я просматривал раздел Атрибуты Справочника по Rust . Это было очень полезно, но я нашел эту часть описания запутанной (выделение мое):
Атрибут inline
предлагает компилятору поместить копию вызываемой функции в вызывающую сторону, а не генерировать код для вызова функции, где она определена.
Этот атрибут может использоваться в функциях и прототипах функций, хотя он ничего не делает с прототипами функций.
Это предостережение повторяется для атрибута #[cold]
.
Я никогда не слышал термин "прототип функции", используемый в отношении Rust. Я знаю, что такая концепция существует в JavaScript, но системы объектов и типов JavaScript и Rust сильно отличаются! Что это значит здесь?
Продолжая поиск, я нашел два упоминания о прототипах функций в Индекс ошибок :
E0034
Компилятор не знает, какой метод вызывать, потому что несколько методов имеют один и тот же прототип.
E0580
Функция main
была объявлена неправильно. Прототип функции main
никогда не должен принимать аргументы.
В этом случае «прототип функции» означает нечто вроде «сигнатуры функции» - имена, аргументы и типы, составляющие внешний интерфейс функции. Похоже, что это также , что это означает в контексте C / C ++ . Тем не менее, это не похоже на использование выше; каждое определение функции начинается с сигнатуры функции, поэтому не имеет смысла говорить, что размещение атрибута в сигнатуре ничего не делает, потому что это то, что вы делаете, когда ставите атрибут в функцию.
Что означает термин «прототип функции» в контексте Rust?