为什么在结构外部创建方法?
在像C#这样的语言中,您可以在struct内部添加方法。我知道在像C和C++这样的语言中,您都有头文件,因此这很有意义,但是据我所知,我无法在Rust中创建头文件。
最佳答案
在大多数语言中,“方法”只是一些语法糖。实际上,您没有对象并调用其方法,而有一个函数引用该对象然后对其进行填充。与常规函数相比,对对象的引用是通过使用点表示法隐式传递的。
struct Foo {
//...
}
impl Foo {
fn do_something(self: &Self) { //"self: &Self" is a more verbose notation for "&self"
//...
}
}
所以这样称呼它
my_foo.do_something();
基本上与
Foo::do_something(&my_foo);
我认为这是Rust开发人员做出的一个决定,即要弄清楚一个结构只不过是一组数据而已。
这也是允许对现有类型进行特征实现的原因。
关于methods - 为什么我必须在Rust的struct外部声明方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43009835/