Rust从入门到实战系列二百一十五:解构结构体和元组

甚至可以用复杂的方式来混合、匹配和嵌套解构模式。如下是一个复杂结构体的例子,其中结构体和元
组嵌套在元组中,并将所有的原始类型解构出来:

fn main() {

struct Point {

x: i32,

y: i32,

}

let ((feet, inches), Point { x, y }) = ((3, 10), Point { x: 3, y: -10 });

}

这将复杂的类型分解成部分组件以便可以单独使用我们感兴趣的值。
通过模式解构是一个方便利用部分值片段的手段,比如结构体中每个单独字段的值。
忽略模式中的值
有时忽略模式中的一些值是有用的,比如 match 中最后捕获全部情况的分支实际上没有做任何事,但是
它确实对所有剩余情况负责。有一些简单的方法可以忽略模式中全部或部分值:使用 _ 模式(我们已经
见过了),在另一个模式中使用 _ 模式,使用一个以下划线开始的名称,或者使用 … 忽略所剩部分的值。
让我们来分别探索如何以及为什么要这么做。
使用 _ 忽略整个值
我们已经使用过下划线()作为匹配但不绑定任何值的通配符模式了。虽然 _ 模式作为 match 表达式
最后的分支特别有用,也可以将其用于任意模式,包括函数参数中,如示例 18-17 所示:
文件名: src∕main.rs
fn foo(
: i32, y: i32) {
println!(“This code only uses the y parameter: {}”, y);
}
fn main() {
foo(3, 4);
}
示例 18-17: 在函数签名中使用 _
这段代码会完全忽略作为第一个参数传递的值 3,并会打印出 This code only uses the y parameter: 4。
大部分情况当你不再需要特定函数参数时,最好修改签名不再包含无用的参数。在一些情况下忽略函数
参数会变得特别有用,比如实现 trait 时,当你需要特定类型签名但是函数实现并不需要某个参数时。此
时编译器就不会警告说存在未使用的函数参数,就跟使用命名参数一样。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值