2013-06-25 4 views
17

Я возился с Rust, идя по примерам, пытаясь сделать класс. Я смотрел на example of StatusLineTextОбъекты и классы в Rust

Он продолжает поднимать ошибки:

error: `self` is not available in a static method. Maybe a `self` argument is missing? [E0424] 
      self.id + self.extra 
      ^~~~ 

error: no method named `get_total` found for type `main::Thing` in the current scope 
    println!("the thing's total is {}", my_thing.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()); 
} 

ответ

21

Вам нужно добавить явное self параметр, чтобы сделать methods:

fn get_total(&self) -> i8 { 
    self.id + self.extra 
} 

Функции без экс параметр self считается associated functions, который может быть вызван без конкретного экземпляра.

+1

Чтобы уточнить, я должен быть явно объявлен в параметрах методов, начиная с Rust 0.6 –

 Смежные вопросы

  • Нет связанных вопросов^_^