Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 匹配绑定和匹配分解之间的区别?_Rust_Match - Fatal编程技术网

Rust 匹配绑定和匹配分解之间的区别?

Rust 匹配绑定和匹配分解之间的区别?,rust,match,Rust,Match,最近,我读到了关于match关键字的文章。使我困惑的是绑定和解构之间的区别。据我所知,这两种方法都提供了访问表达式中变量的方法绑定可以指定范围匹配,但可以通过解构和来实现。那么,有没有人能展示一些只有绑定才能做到或解释这两个概念之间真正区别的案例呢?在这里,您可以看到一个场景,当需要绑定时,因为解构不能满足我们当前的需要。如果我们简单地解构结构,我们就可以访问结构的内部字段。这意味着match arm右侧使用的值将无法访问结构上定义的方法 在我的示例中,我还匹配了一个特定的值ex.value,这

最近,我读到了关于
match
关键字的文章。使我困惑的是
绑定
解构
之间的区别。据我所知,这两种方法都提供了访问表达式中变量的方法<代码>绑定可以指定范围匹配,但可以通过
解构
和来实现。那么,有没有人能展示一些只有
绑定
才能做到或解释这两个概念之间真正区别的案例呢?

在这里,您可以看到一个场景,当需要绑定时,因为解构不能满足我们当前的需要。如果我们简单地解构结构,我们就可以访问结构的内部字段。这意味着match arm右侧使用的值将无法访问结构上定义的方法

在我的示例中,我还匹配了一个特定的值
ex.value
,这当然不是必需的,可以用一个保护来代替,但是如果条件不是很复杂,这种方法更简洁

struct示例{
某些值:i32,
其他值:字符串
}
impl示例{
pub fn some_fn(&mut self){}
}
fn main(){
设ex=Example{some_value:42,some_other_value:“Foobar.”to_string()};
火柴{
mut new_ex@Example{some_value:43,…}=>new_ex.some_fn(),
示例{some_value:first,some_other_value:second}=>println!(“第一个值:{}\n第二个值:{}”,first,second),
}
}

我猜文档中缺少一种示例,您可以绑定整个图案,这在销毁和保护中是不可能的,请检查: