Skip to content

结构体

Rust 中的结构体是用来声明的,不能直接创建实例。

使用 impl 关键字来实现结构体的动作(在里面写结构体的方法),可同时结合泛型使用。

rust
struct Site {
    domain: String, // 每个字段必须声明类型
    name: String,   // 字段定义后面使用逗号分隔,而不是分号
    is_active: bool
}

let knots = Site {
    domain: String::from("knots.l0u0l.com"),
    name: "Knots".to_string(),
    is_active: true
};

若欲实例化的结构体,某字段与现有变量一致,触发简写:

rust
let domain: String::from("knots.l0u0l.com");
let name: "Knots".to_string();

let knots = Site {
    domain,
    name,
    is_active: true
};

元组结构体

定义一种简单又常用的类型。

rust
struct Color(u8, u8, u8);
struct Point(f64, f64);

let black = Color(0, 0, 0);
let origin = Point(0.0, 0.0);

元组结构体实例(对象)的使用方式和元组一样,通过 .下标 来进行访问:

rust
fn main() {
    struct Color(u8, u8, u8);
    struct Point(f64, f64);

    let black = Color(0, 0, 0);
    let origin = Point(0.0, 0.0);

    println!("black = ({}, {}, {})", black.0, black.1, black.2); 
    println!("origin = ({}, {})", origin.0, origin.1);
}