在 Rust 中,"箱"(Box)通常指的是堆上分配的值的指针。这种分配在运行时发生,并且值的大小在编译时未知。Box 类型是 Rust 中的一个智能指针,用于对数据进行堆分配,并在超出作用域时自动释放。

Box 的基本用法
fn main() {
    // 使用 Box 在堆上分配一个整数
    let boxed_number: Box<i32> = Box::new(42);

    // 使用 * 解引用 Box 中的值
    println!("Value inside the box: {}", *boxed_number);
}

在上述例子中,Box::new(42) 在堆上分配了一个整数,并将指针存储在 boxed_number 中。使用 *boxed_number 解引用 Box,获取堆上存储的值。

模块

模块是 Rust 中的一种组织代码的方式,可以将相关的项(如函数、结构体、枚举、trait 等)放在一起,形成一个逻辑单元。模块有助于组织代码、提高可读性,并支持封装和代码重用。

定义模块
// 定义模块
mod my_module {
    // 模块中的项
    pub fn hello() {
        println!("Hello from my_module!");
    }

    pub struct MyStruct {
        pub value: i32,
    }
}

fn main() {
    // 使用模块中的项
    my_module::hello();

    let my_instance = my_module::MyStruct { value: 42 };
    println!("Value from MyStruct: {}", my_instance.value);
}

在这个例子中,通过 mod my_module 定义了一个名为 my_module 的模块,其中包含了一个函数 hello 和一个结构体 MyStruct。通过 my_module::hello() 和 my_module::MyStruct 可以访问模块中的项。

模块的文件组织

Rust 的模块系统与文件系统有关,通常一个模块对应一个文件。模块的文件名应与模块名相同,并且使用 snake_case 命名风格。

例如,模块定义在 my_module.rs 文件中:
// my_module.rs

pub fn hello() {
    println!("Hello from my_module!");
}

pub struct MyStruct {
    pub value: i32,
}

在主程序中通过 mod my_module; 引入模块:
// main.rs

mod my_module;

fn main() {
    my_module::hello();

    let my_instance = my_module::MyStruct { value: 42 };
    println!("Value from MyStruct: {}", my_instance.value);
}

这是 Rust 中模块和 Box 的基本概念。模块有助于组织代码,而 Box 则提供了堆上分配的灵活性。


转载请注明出处:http://www.pingtaimeng.com/article/detail/6807/Rust