橘子味的心
标题:Rust结构体方法语法

方法类似于函数,因为它们在startthen函数名称中包含fn关键字。 方法还包含参数和返回值。 但是,当在struct上下文中声明方法时,方法语法与正常函数不同。这些方法的第一个参数始终是self,它表示调用函数的实例。

定义方法

struct上下文中声明方法时定义方法。

  1. struct Square
  2. {
  3. a : u32,
  4. }
  5. impl Square
  6. {
  7. fn area(&self)->u32
  8. {
  9. self.a * self.a
  10. }
  11. }
  12.  
  13. fn main()
  14. {
  15. let square = Square{a:10};
  16. print!("Area of square is {}", square.area());
  17. }
  18. Rust

执行上面示例代码,得到以下结果 -

  1. Area of square is 100
  2. Shell

当在struct上下文中声明方法时,定义实现块内的方法,即impl块。

  1. impl Square
  2. {
  3. fn area(&self)->u32
  4. {
  5. self.a * self.a
  6. }
  7. }
  8. Rust

第一个参数是签名中的self,可在主体内的任何位置。

在这里,使用方法语法来调用area()函数。 方法语法是一个实例,后跟点运算符,方法名称,参数和任何参数。

  1. square.area();
  2. Rust

square是实例,area()是函数名称。

注意:如果想要更改调用该方法的实例,那么使用&mut self而不是&self作为第一个参数。

方法语法的优点:

使用方法语法而不是函数的主要优点是,与实例相关的所有数据都放在impl块中,而不是放在impl块之外的其它位置。