Rust 编程中的结构


Rust 中的结构是用户定义的数据类型。它们包含用于定义其具体实例的字段。

我们在 struct 关键字的帮助下定义struct,后跟我们希望为 struct 起的名字。struct 的名称应该描述我们正在其中分组的数据块的重要性。

语法

struct Employee {
   id: i32,
   name: String,
   leaves: i8,
}

上面的语法包含 struct 的名称,在大括号中,我们有不同的字段,即类型为i32idnameleaves

创建实例

为了创建 Employee 结构的实例,我们执行类似这样的操作

fn main() {
   let emp1 = Employee {
      id : 10602,
      name : String::from("Mukul"),
      leaves : 9
   };
   println!("{:?}",emp1);
}

输出

Employee { id: 10602, name: "Mukul", leaves: 9 }

上面的结构实例不可变;我们可以通过添加mut关键字使其可变。

示例

 在线演示

#![allow(unused)]
#[derive(Debug)]
struct Employee {
   id: i32,
   name: String,
   leaves: i8,
}
fn main() {
   let mut emp1 = Employee {
      id : 10602,
      name : String::from("Mukul"),
      leaves : 9
   };
   println!("{:?}",emp1);
   emp1.id = 10603;
   println!("{:?}",emp1);
}

输出

Employee { id: 10602, name: "Mukul", leaves: 9 }
Employee { id: 10603, name: "Mukul", leaves: 9 }

单位结构

我们还可以在 Rust 中拥有不包含任何字段的结构。它们很少有用,但可以与其他功能结合使用。

示例

 在线演示

#![allow(unused)]
#[derive(Debug)]
struct Person;
fn main() {
   let p = Person;
   println!("{:?}",p);
}

输出

Person

元组结构

第三种类型的结构称为元组结构;它们包含一个或多个用逗号分隔的值。

示例

 在线演示

#![allow(unused)]
#[derive(Debug)]
struct Color(u8, u8, u8);
fn main() {
   let white = Color(1, 1, 1);
   let Color(r, g, b) = white;
   println!("White = rgb({}, {}, {})", r, g, b);
}

输出

White = rgb(1, 1, 1)

更新于:2021 年 4 月 3 日

554 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始
广告