为什么在结构外部创建方法?
在C#等语言中,您可以在结构中添加方法。我知道在C和C ++这样的语言中你有头文件所以它有意义,但据我所知,我不能在Rust中创建头文件。
答案 0 :(得分:8)
在大多数语言中,"方法"只是一些语法糖。你没有实际拥有一个对象并调用它的方法,你有一个函数,它接受对该对象的引用,然后用它做任务。与常规函数相比,使用点表示法隐式传递对象的引用。
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开发人员做出的决定是让结构更加清晰,结构只不过是一组数据。
这也是允许现有类型的特征实现的原因。