Jan*_*kke 2 methods struct rust
为什么在结构外部创建方法?
在像C#这样的语言中,您可以在结构中添加方法.我知道在C和C++这样的语言中你有头文件所以它有意义,但据我所知,我不能在Rust中创建头文件.
在大多数语言中,"方法"只是一些语法糖.你实际上没有一个对象并调用它的方法,你有一个函数,它接受对该对象的引用,然后用它做东西.与常规函数相比,使用点表示法隐式传递对象的引用.
struct Foo {
//...
}
impl Foo {
fn do_something(self: &Self) { //"self: &Self" is a more verbose notation for "&self"
//...
}
}
Run Code Online (Sandbox Code Playgroud)
所以这样称呼它
my_foo.do_something();
Run Code Online (Sandbox Code Playgroud)
基本上是一样的
Foo::do_something(&my_foo);
Run Code Online (Sandbox Code Playgroud)
我认为Rust开发人员做出的决定是让结构更加清晰,结构只不过是一组数据.
这也是允许现有类型的特征实现的原因.