繁体   English   中英

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

[英]Why do I have to declare methods outside a struct in Rust?

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

在像C#这样的语言中,您可以在结构中添加方法。 我知道在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开发人员做出的决定是让结构更加清晰,结构只不过是一组数据。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM