当前位置: 首页 > 编程笔记 >

Rust 在地图和and_then中使用Option

尉迟招
2023-03-14
本文向大家介绍Rust 在地图和and_then中使用Option,包括了Rust 在地图和and_then中使用Option的使用技巧和注意事项,需要的朋友参考一下

示例

map当处理数组和向量时,该操作是一个有用的工具,但是它也可以用于以Option函数方式处理值。

fn main() {

    // We start with an Option value (Option<i32> in this case).
    let some_number = Some(9);

    // 让我们用我们的数字做一些连续的计算。
    // 这里的关键点是我们不必拆开包装
    // 选项类型的内容-相反,我们只是
    //改变其内容。整个操作的结果
    // will still be an Option<i32>. If the initial value of
    // 'some_number'是'None'而不是9,则结果
    //  也将是“无”。
    let another_number = some_number
        .map(|n| n - 1) // => Some(8)
        .map(|n| n * n) // => Some(64)
        .and_then(|n| divide(n, 4)); // => Some(16)

    // 在上面的最后一行,我们正在使用助手进行除法
    // 功能(定义:请参阅底部)。
    // “ and_then”与“ map”非常相似,但允许我们传递
    //该函数本身返回Option类型。为了确保我们
    // don't end up with Option<Option<i32>>, 'and_then' flattens the
    // 结果(在其他语言中,“ and_then”也称为“ flatmap”)。

    println!("{}", to_message(another_number));
    // => "16绝对是个数字!"

    // 为了完整起见,让我们检查一下结果
    // 除以零。
    let final_number = another_number
        .and_then(|n| divide(n, 0)); // => None

    println!("{}", to_message(final_number));
    // => "None!"
}

//只是整数除法的辅助函数。以防万一
// 除数为零,结果为“无”。
fn divide(number: i32, divisor: i32) -> Option<i32> {
    if divisor != 0  { Some(number/divisor) } else { None }
}

// 创建一条消息,告诉我们是否
// Option<i32> contains a number or not. There are other
// 达到相同结果的方法,但让我们使用
// 再次映射!
fn to_message(number: Option<i32>) -> String {
    number
        .map(|n| format!("{} is definitely a number!", n)) // => Some("...")
        .unwrap_or("None!".to_string()) // => "..."
}
           

 类似资料:
  • 问题内容: 我的应用程序中有一个UIWebView,我想使用它来显示将链接到另一个URL的图像。 我在用着 问题是,即使图像已作为资源添加到我的项目中并复制到捆绑包中,也无法加载(即找不到)。 我尝试使用NSBundle来获取图像的完整路径并使用它,但它仍然不会显示在Web视图中。 有任何想法吗? 问题答案: 使用相对路径或文件:引用图像的路径不适用于UIWebView。相反,您必须使用正确的ba

  • 我目前正在使用LWJGL3并构建一个简单的Skybox。我想让skybox接收一个HDR文件,一个等长方形的地图。我可以得到一个skybox运行与PNG与PNG解码器,但不确定它将如何与HDR文件。据我所知,STB(在C++中)允许在程序中上传HDR文件,LWJGL3也支持STB。 我如何创建一个支持机顶盒和HDR文件的loadTexture函数? 编辑:我要把我的进展发布给任何人,这样任何人都可

  • 正如标题所说,我已经在我的应用程序中使用谷歌地图,我也希望在Kindle设备中使用亚马逊地图。AM和GM v1在技术上使用相同的接口。我如何才能很好地解决这个问题,根据我使用的设备,我可以为每个类获得适当的类类型(例如com.google.android.maps.MapView或com.amazon.geo.maps.MapView)? 所以假设我需要适当版本的MapView类,具体取决于我的设

  • 我想知道是否有人在同一版本中实现了谷歌地图V2和百度地图;因为通用汽车在中国没有按预期工作? 或者我应该将项目分成两个分支?但是跳过维护两个分支会很好。

  • 我正在开发一个使用Zomato Api获取附近餐馆的应用程序。我有一个片段,它向用户显示了所单击餐厅的详细信息。我的目标是在地图上显示餐厅的位置,但我很难做到这一点,因为我会出错。它只在活动中起作用吗?我是否必须将层次结构更改为FragmentActivity? 我得到的错误是:

  • 正如标题所示,我对共享库如何与Rust中的线程局部变量一起工作感到困惑。下面我有一个最小的例子: 在名为的板条箱中: cargo.toml: src/lib.rs: