gpt4 book ai didi

rust - 在 Rust 中,为什么当 if 需要匹配时我不取消引用匹配项?

转载 作者:行者123 更新时间:2023-12-05 05:35:52 24 4
gpt4 key购买 nike

作为一名熟悉指针和取消引用的 C 程序员,我正在学习 Rust 教程,并且遇到了一些我不理解的东西。

fn main() {
let vector = vec![10, 20, 30, 40];
for entry in &vector {
if *entry == 30 { // I have to use a star (dereference) here...
println!("thirty");
} else {
println!("{}", entry);
}
match entry { // ...but why do I not need a star here?
30 => println!("thirty"),
_ => println!("{}", entry), // or here?
}
}
}

最佳答案

在第一种情况下,您的 if 语句正在与一个值进行比较,因此您必须引入该值,也就是取消引用它,以便正确地比较。此外,向量上的循环暗示了一个 .into_iter() 调用,在给定上下文的情况下,它为您提供了对 entry 中当前值的引用 &T

在第二次匹配时,Rust 编译器正在应用自动取消引用,因此编译器已经知道您不想匹配指针,而是匹配值。正如其他人指出的那样,匹配语句包含一些人体工程学以使代码更具可读性。

关于rust - 在 Rust 中,为什么当 if 需要匹配时我不取消引用匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73410150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com