You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.5 KiB
3.5 KiB
使用struct的场景
不使用结构
计算由单独的宽度和高度变量指定的矩形的面积,相关性较差。将宽度和高度组合在一起会更具可读性和更易于管理
用元组进行重构
我们现在只传递一个参数。但是现在对具体的width和height没有明确的命名。可能会使人混淆。
使用结构重构(增加更多信息)
传递一个结构体引用(要是不想要owner了,传整体也行)给函数。我们想要借用结构而不是拥有它。这样,main
保留其所有权并可以继续使用rect1
,这就是我们&
在函数签名和调用函数的地方使用的原因。
使用派生特征添加有用的功能
我们看到的基本类型Display
都是默认实现的,因为只有一种方式可以向1
用户显示一个或任何其他基本类型。但是对于结构, println!
格式化输出的方式就不那么清晰了,因为有更多的显示可能性。
以调试模式打印,但我们必须明确选择让该功能可用于我们的结构。
修改后:
加强版的输出 {:#?}
trait
在 Rust 中,trait 是用来描述类型的一组特征的。trait 可以被用来定义共同的行为,并被多个类型实现。
一些常见的 trait 包括:
Clone
: 这个 trait 允许我们复制值,而不是移动它们。Copy
: 这个 trait 允许我们在移动或覆盖值的同时保留一个副本。Debug
: 这个 trait 允许我们用{:?}
格式化调试输出。Eq
: 这个 trait 允许我们比较两个值是否相等。Ord
: 这个 trait 允许我们比较两个值的大小。PartialEq
: 这个 trait 允许我们比较两个值是否相等,但是类型不必完全匹配。PartialOrd
: 这个 trait 允许我们比较两个值的大小,但是类型不必完全匹配。Hash
: 这个 trait 允许我们使用值作为键值。
这些 trait 都是 Rust 标准库中内置的。你也可以自己定义新的 trait。
dbg!宏打印
并且它不需要取该表达式的引用(反而是将表达式的所有权交还给它)。它会打印出该dbg!宏调用在代码中的文件名和行号以及该表达式的值,然后返回该值的所有权。
调用 dbg! 宏会将信息输出到标准错误控制台流 (stderr),而 println! 则会输出到标准输出控制台流 (stdout)。这意味着,使用 dbg! 宏输出的信息会出现在终端的错误信息中,而使用 println! 输出的信息则出现在终端的正常输出中。
简单案例:
本案例: