为什么我必须在Rust中的struct之外声明方法?

时间:2017-03-24 21:59:49

标签: methods struct rust

为什么在结构外部创建方法?

在C#等语言中,您可以在结构中添加方法。我知道在C和C ++这样的语言中你有头文件所以它有意义,但据我所知,我不能在Rust中创建头文件。

1 个答案:

答案 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开发人员做出的决定是让结构更加清晰,结构只不过是一组数据。

这也是允许现有类型的特征实现的原因。