rust - Rust 中 if 和 if-let 的主要区别
问题描述
我看不出我们为什么使用if let
和只是通常的原因if
。在 Rust 书,第 6.3 章中,示例代码如下:
let some_u8_value = Some(0u8);
if let Some(3) = some_u8_value {
println!("three");
}
上面的代码与以下代码相同:
let some_u8_value = Some(0u8);
if Some(3) == some_u8_value {
println!("three");
}
关于我们为什么要使用if let
或它专门用于什么的任何其他原因?
解决方案
另一个原因是如果您希望使用模式绑定。例如考虑一个枚举:
enum Choices {
A,
B,
C(i32),
}
如果您希望为 的C
变体实现特定逻辑Choices
,可以使用 if-let 表达式:
let choices: Choices = ...;
if let Choices::C(value) = choices {
println!("{}", value * 2);
}
推荐阅读
- php - 在 PHP 中从 SFTP 服务器打开 CSV 文件
- react-native - 当应用程序处于后台状态时如何暂停时钟
- flask - 尝试使用 kubernetes 访问我的 Flask api 时出现 502(错误网关)
- python - 问题理解 scipy.integrate.RK45 要求
- python - How to query multiple models in views and pass them to one template?
- python - **如何在 Python Google Drive API 中列出多个文件夹的内容?
- javascript - javascript/jquery script to calculate html page size
- angular - How should I apply conditional validation logic to a reactive form, based on the forms current values?
- snowflake-cloud-data-platform - snowflake Python Connection KeyError: 'snowflake-connector-python
- java - I have an error about using class and objects