methods - 为什么我必须在 Rust 的结构之外声明方法?

标签 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"
        //...
    }
}

所以这样称呼

my_foo.do_something();

本质上是一样的

Foo::do_something(&my_foo);

我认为这是 Rust 开发人员做出的一个决定,目的是更清楚地表明结构只是一组数据。

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

关于methods - 为什么我必须在 Rust 的结构之外声明方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009835/

相关文章:

java - 发生某些情况时删除 MouseListener

javascript - 将 $.getJSON 的结果传递给同一个类的另一个方法

c++ - 在结构和模板中试验 union 和位域

rust - 了解生命周期 : max lifetime and 'static

vector - 返回带有任意变量的错误枚举

Java注解在注解声明中执行一个方法(用于android)

java - 为 ArrayList 创建 add 方法

c - 如何使新结构与旧结构兼容?

c++ - 用结构修改 protected 值

rust - 为什么这个 Rust 2018 代码编译时使用 `cargo build` 而不是使用 rustc?