Rust之包,箱和模块管理(五):将模块分成不同的文件

开发环境

  • Windows 10
  • Rust 1.64.0

 

  •   VS Code 1.71.2 

项目工程

这里继续沿用上次工程rust-demo

 将模块分成不同的文件

到目前为止,本章中的所有例子都在一个文件中定义了多个模块。当模块变大时,您可能希望将它们的定义移动到一个单独的文件中,以使代码更容易导航。

例如,让我们从之前的例子中有多个餐馆模块的代码开始。我们将把模块提取到文件中,而不是把所有模块都定义在板条箱根文件中。在这种情况下,板条箱根文件是src/lib.rs,但是这个过程也适用于箱crate根文件是src/main.rs的二进制箱c

为了实现一个简易计算器,我们可以将 Rust 代码分解成几个模块(mod),每个模块负责特定的功能。这里是一个基本的示例,我们将创建 `add`, `subtract`, `multiply`, `divide` `sort` 几个功能的模块: 1. **math.rs** (数学运算) ```rust // math.rs pub fn add(a: i32, b: i32) -> i32 { a + b } pub fn subtract(a: i32, b: i32) -> i32 { a - b } pub fn multiply(a: i32, b: i32) -> i32 { a * b } pub fn divide(a: i32, b: i32) -> Option<i32> { if b != 0 { Some(a / b) } else { None } } ``` 2. **sorting.rs** (排序) ```rust // sorting.rs use std::collections::VecDeque; pub fn sort_numbers(numbers: Vec<i32>) -> Vec<i32> { let mut deque = VecDeque::from(numbers); deque.sort_unstable(); deque.into_iter().collect() } ``` 3. **calculator.rs** (主计算器程序) ```rust // calculator.rs extern crate math; extern crate sorting; use self::math::*; use self::sorting::*; fn main() { let numbers = vec![5, 2, 9, 1, 7]; // 运算示例 println!("5 + 2 = {}", add(5, 2)); println!("9 - 1 = {}", subtract(9, 1)); println!("5 * 3 = {}", multiply(5, 3)); // 分数运算,如果除数不为零 match divide(10, 2) { Some(result) => println!("10 / 2 = {}", result), None => println!("Division by zero is not allowed"), } // 排序示例 let sorted_numbers = sort_numbers(numbers); println!("Sorted numbers: {:?}", sorted_numbers); } ``` 这个例子中,我们定义了数学运算的函数,并在主程序中调用它们。另外,`sort_numbers` 函数用于对输入的数字向量进行排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值