Oop 锈蚀中的对象和类

Oop 锈蚀中的对象和类,oop,rust,Oop,Rust,我在摆弄铁锈,参考例子,试着做一个分类。我一直在看报纸 它不断提出错误: 错误:`self`在静态方法中不可用。也许缺少一个“自我”论点?[E0424] self.id+self.extra ^~~~ 错误:在当前作用域中找不到类型为“main::Thing”的名为“get_total”的方法 普林顿!(“东西的总数是{}”,我的东西。get_total()); ^~~~~~~~~ 我的代码相当简单: fn main() { struct Thing { id: i8,

我在摆弄铁锈,参考例子,试着做一个分类。我一直在看报纸

它不断提出错误:

错误:`self`在静态方法中不可用。也许缺少一个“自我”论点?[E0424]
self.id+self.extra
^~~~
错误:在当前作用域中找不到类型为“main::Thing”的名为“get_total”的方法
普林顿!(“东西的总数是{}”,我的东西。get_total());
^~~~~~~~~
我的代码相当简单:

fn main() {
    struct Thing {
        id: i8,
        extra: i8,
    }

    impl Thing {
        pub fn new() -> Thing {
            Thing { id: 3, extra: 2 }
        }
        pub fn get_total() -> i8 {
            self.id + self.extra
        }
    }

    let my_thing = Thing::new();
    println!("the thing's total is {}", my_thing.get_total());
}

您需要添加一个显式的
self
参数,以便:


将考虑没有显式
self
参数的函数,这些函数可以在没有特定实例的情况下调用。

为了澄清这一点,自0.6起,self现在必须在方法的参数中显式声明
fn get_total(&self) -> i8 {
    self.id + self.extra
}