今天,我們來介紹 Rust 的模組系統、套件管理和測試。這些主題對於大型專案、管理依賴關係和確保程式碼品質有很大的幫助。
Rust 的模組系統允許我們組織和重用程式碼。
// 在 src/lib.rs 或 src/main.rs 中
mod front_of_house {
pub mod hosting {
pub fn add_to_waitlist() {}
}
}
pub fn eat_at_restaurant() {
front_of_house::hosting::add_to_waitlist();
}
use crate::front_of_house::hosting;
pub fn eat_at_restaurant() {
hosting::add_to_waitlist();
}
// src/front_of_house.rs
pub mod hosting {
pub fn add_to_waitlist() {}
}
// src/lib.rs
mod front_of_house;
pub fn eat_at_restaurant() {
front_of_house::hosting::add_to_waitlist();
}
Rust 使用 Cargo 作為其套件管理器和建構系統。
cargo new my_project
cd my_project
在 Cargo.toml
文件中增加依賴:
[dependencies]
serde = "1.0"
reqwest = { version = "0.11", features = ["json"] }
cargo build
cargo run
Rust 有一個內建的測試框架,使得編寫和執行測試變得簡單。
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_works() {
assert_eq!(2 + 2, 4);
}
#[test]
#[should_panic(expected = "除以零")]
fn it_panics() {
divide(10, 0);
}
}
fn divide(a: i32, b: i32) -> i32 {
if b == 0 {
panic!("除以零");
}
a / b
}
在 tests
目錄下建立檔案:
// tests/integration_test.rs
use my_project;
#[test]
fn test_add() {
assert_eq!(my_project::add(2, 2), 4);
}
cargo test
讓我們建立一個簡單的計算器套件,展示模組化、文件化和測試。
// src/lib.rs
//! 一個簡單的計算器套件。
//!
//! 這個套件提供基本的數學運算功能。
/// 加法模組
pub mod add {
/// 執行兩個數字的加法。
///
/// # 範例
///
/// ```
/// use my_calculator::add::add;
/// assert_eq!(add(2, 2), 4);
/// ```
pub fn add(a: i32, b: i32) -> i32 {
a + b
}
}
/// 減法模組
pub mod subtract {
/// 執行兩個數字的減法。
///
/// # 範例
///
/// ```
/// use my_calculator::subtract::subtract;
/// assert_eq!(subtract(5, 3), 2);
/// ```
pub fn subtract(a: i32, b: i32) -> i32 {
a - b
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_add() {
assert_eq!(add::add(2, 2), 4);
}
#[test]
fn test_subtract() {
assert_eq!(subtract::subtract(5, 3), 2);
}
}
# Cargo.toml
[package]
name = "my_calculator"
version = "0.1.0"
edition = "2024"
[dependencies]