7 prototype terminology function rust
我想了解#[inline]Rust中属性的行为,所以我正在阅读The Rust Reference的Attributes部分.这非常有帮助,但我发现这部分描述令人困惑(强调我的):
该
inline属性向编译器建议它应该在调用者中放置属性函数的副本,而不是生成代码来调用定义它的函数.此属性可用于函数和函数原型,但它不对函数原型执行任何操作.
对该#[cold]属性重复此警告.
我从未听过关于Rust使用的术语"函数原型".我知道这样的概念存在于JavaScript中,但JavaScript和Rust的对象和类型系统是非常不同的!这是什么意思?
进一步搜索,我在错误索引中找到了两个函数原型:
E0034
编译器不知道要调用哪种方法,因为多个方法具有相同的原型.
E0580
该
main函数被错误地声明.该main函数原型不应该采取的论点.
在这种情况下,"函数原型"似乎意味着类似"函数签名" - 构成函数外部接口的名称,参数和类型.这似乎也是它在C/C++环境中的含义.但是,这似乎与上述用法不符; 每个函数定义都以函数的签名开头,因此将该属性放在签名上没有任何意义是没有意义的,因为当你将属性放在函数上时,这就是你正在做的事情.
什么术语"函数原型"在Rust的背景下意味着什么?
sep*_*p2k 10
但是,这似乎与上述用法不符; 每个函数定义都以函数的签名开头,因此将该属性放在签名上没有任何意义是没有意义的,因为当你将属性放在函数上时,这就是你正在做的事情.
是的,每个函数都以签名开头,但并非每个签名都是函数定义的一部分.也就是说,可以有一个签名,但没有正文(例如,在特征中),这就是你引用的文档中"原型"的含义.像这样的东西:
trait Foo {
#[inline] // This annotation does nothing
fn foo();
}
Run Code Online (Sandbox Code Playgroud)