Defining and Instantiating Structs
格式
1 2 3 4
   | struct Data_name {     data1: type1,     data2: type2, }
  | 
 
1 2 3 4 5 6
   | struct Data {     name: String,     age: u32,     gender: bool,     balance: f32, }
  | 
 
初始化一个 struct 对象
1 2 3 4 5 6
   | let user = Data {     name: String::from("SCUT"),     age: 1900,     gender: true,     balance: 0.0, };
  | 
 
访问对象中的元素
1
   | println!("{} {} {} {}", user.name, user.age, user.gender, user.balance);
  | 
 
.. 语句
1 2 3 4 5
   | let user1 = Data {     name: String:: from("SCUT"),     gender: false,     ..user  };
  | 
 
这样创建出来的 user1 ,未指出的变量会复制 user 中的,注意会有 move 语句,所有权可能会变化
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | let user1 = Data {     name: String:: from("SCUT"),     gender: false,     ..user  }; println!("{} {} {} {}", user1.name, user1.age, user1.gender, user1.balance);
 
  let user2 = Data {     ..user };
  println!("{} {} {} {}", user2.name, user2.age, user2.gender, user2.balance);
 
  | 
 
tuple struct
格式
1
   | struct Data_name(type1, type2,...); 
   | 
 
创建对象
1 2 3
   |  struct Point(f32, f32); let p = Point(0.0, 0.0);
 
  | 
 
访问元素
1
   | println!("{} {}", p.0, p.1);
  | 
 
An Example Program Using Structs
debug
在类前面加 #[derive(Debug)]
1 2 3 4 5 6 7
   | #[derive(Debug)] struct Data {     name: String,     age: u32,     gender: bool,     balance: f32, }
   | 
 
输出 类
{:?} 语法
1 2 3
   | println!("{:?}", user);
 
 
  | 
 
{:#?} 语法
1 2 3 4 5 6 7 8 9 10
   | println!("{:#?}", user);
 
 
 
 
 
 
 
 
 
  | 
 
格式不同
作为参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14
   | struct Rectangle {     width: f64,     height: f64, }
  fn area(rect: &Rectangle) -> f64 {     rect.width * rect.height }
  let rect = Rectangle {     width: 3.1,     height: 4.1, }; println!("{}", area(&rect));
  | 
 
Method Syntax
实现类中的函数
impl 语句 implementations
格式
1 2 3 4 5 6 7 8 9
   | impl srtuct_name {     fn func1(&self, ...) {              }          fn func2(...) {              } }
  | 
 
例如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
   | #[derive(Debug)] struct Rectangle {     width: f64,     height: f64, }
  impl Rectangle {     fn area(&self) -> f64 {         self.width * self.height     }
      fn hold(&self, rect: &Rectangle) -> bool {         self.width >= rect.width && self.height >= rect.height     }
           fn square(size: f64) -> Rectangle {         Rectangle {             width: size,             height: size,         }     } }
  let r1 = Rectangle {     width: 10.0,     height: 20.0, };
  let r2 = Rectangle {     width: 11.0,     height: 21.0, };
  println!("{} {}", r1.hold(&r2), r2.hold(&r1));
  let sq = Rectangle::square(10.0); println!("{:#?}", sq);
   | 
 
以上就是 $Rust$ 的 $struct$
参考 The Rust Programming Language 
更多内容参考我的 Blog