开发环境
- Windows 10
- Rust 1.57.0
VS Code 1.63.2
项目工程
这里继续沿用上次工程rust-demo
结构体示例
为了理解什么时候可能需要使用结构体,让我们编写一个程序来计算矩形的面积。我们将从单变量开始,然后重构程序,直到使用结构代替。
让我们用`cargo`创建一个名为`rectangles`的新的程序,它将以像素为单位指定矩形的宽度和高度,并计算矩形的面积。代码如下
fn main() {
let width1 = 30; // 宽度
let height1 = 50; // 高度
println!(
"The area of the rectangle is {} square pixels.",
area(width1, height1)
);
}
// 计算面积的接口
fn area(width: u32, height: u32) -> u32 {
width * height
}
运行
cargo run
尽管上述示例中可以通过调用每个维度的area函数计算出矩形的面积,但我们可以做得更好。宽度和高度是相互关联的,因为它们一起描述了一个矩形。
这个代码的问题在area的签名中很明显:
fn area(width: u32, height: u32) -> u32 {
面积函数area是用来计算一个矩形的面积的,但是我们写的这个函数有两个参数。这些参数是相关的,但在我们的程序中没有表示。将宽度和高度组合在一起将更易于阅读和管理。我们可以使用Tuple类型来重构上述代码。
使用Tuple重构
可以查看下述代码:
fn main() {
let rect1 = (30, 50); // 使用Tuple类型
println!(
"The area of the rectangle is {} square pixels.&