使用结构体的示例程序
使用结构体的示例程序
为了理解何时我们可能希望使用结构体,让我们编写一个计算矩形面积的程序。我们将从使用单独的变量开始,然后重构程序,直到我们使用结构体为止。
我们将使用Cargo创建一个名为“rectangles”的新二进制项目,该项目将接收以像素为单位指定的矩形的宽度和高度,并计算矩形的面积。代码清单5-8展示了在项目的src/main.rs
文件中以一种方式执行这个操作的简短程序。
文件名:src/main.rs
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
}
代码清单5-8:计算由单独的宽度和高度变量指定的矩形的面积
现在,使用cargo run
运行这个程序:
$ cargo run
Compiling rectangles v0.1.0 (file:///projects/rectangles)
Finished dev [unoptimized + debuginfo] target(s) in 0.42s
Running `target/debug/rectangles`
The area of the rectangle is 1500 square pixels.
这段代码通过调用area
函数来计算矩形的面积,同时传递每个维度作为参数,但我们可以做更多工作,使这段代码更加清晰和易读。
这段代码的问题在于area
函数的签名:
fn area(width: u32, height: u32) -> u32 {
area
函数应该计算一个矩形的面积,但我们编写的函数有两个参数,并且在程序中没有明确表明这些参数之间的关系。将宽度和高度组合在一起将使代码更加可读和易于管理。在第3章的"元组类型"一节中,我们已经讨论了一种可能的做法:使用元组。