结果和选项展开

融合

我正在尝试学习Rust,并且想了解概念基础。在Rust中,我们通常将其Result<T, E>用作返回类型。基本上,一个类型由-Ok()Err()组成,由调用方处理。

但是,令我感到惊讶的是,Ok()Err()再次具有其“选项”->即SomeNone

示例代码:

fn integer_divide(a: u32, b: u32) -> Result<u32, String> {
  if b != 0 {
    Ok(a / b)
  } else {
    Err("Division by zero!".into())
  }
} 

let result = integer_divide(5, 0);

if(result.is_err()){
    if(result.err().is_some()){
        // some logic
    }
}

因此,基本上,我们需要仔细检查一下才能得出每个函数的结果值(首先是ErrOk,然后是forSomeNone)?如果是,我觉得这很笨拙。尤其是在情况下我的integer_divide功能,我可以说哪里可靠,它永远不可能有结果Err()None值。

对我来说,如果我们只是解开包装Err(),那就更有意义了,然后检查它的值是None还是其他类型……尤其是在我100%确信无法容纳None价值的情况下。任何想法表示赞赏。

注意

我知道?操作员的存在我只想了解概念。

编程序

result.err()单独考虑,没有什么可以确保result实际上包含一个错误,因此此方法每次调用它都无法返回错误。在Rust中提供可选内容的通常方法是返回Option,因此返回is_some()方法。这并不意味着Result包含这样的OptionOption是由err()方法创建的,以防万一result不包含错误。知道内部实际上存在错误,result因为您之前使用进行了测试result.is_err()但是该err()方法的设计者很久以前不知道可以is_err()在调用之前进行测试err()

result没有双重检查的通常处理方式

    match result {
        Ok(v) => {
            println!("result is {}", v);
        }
        Err(e) => {
            println!("error: {}", e);
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

强制展开选项和隐式展开选项之间的区别

来自分类Dev

MongoDB查找和展开未给出正确的结果

来自分类Dev

grep -q命令选项和结果

来自分类Dev

使内容和选项卡在 pyqt5 中可展开

来自分类Dev

表格:数组结果未展开

来自分类Dev

使用clang格式选项AlwaysBreakAfterReturnType和AfterFunction的结果奇怪

来自分类Dev

展开和折叠JavaScript

来自分类Dev

展开和折叠CardView

来自分类Dev

如何使用隐式展开的可选选项?

来自分类Dev

快速展开多个可选项

来自分类Dev

在Android中展开和折叠

来自分类Dev

用CSS展开和折叠

来自分类Dev

在Android中展开和折叠

来自分类Dev

ECSlidingViewController与推和展开Segue

来自分类Dev

Swift Optionals和强制展开

来自分类Dev

用CSS展开和折叠

来自分类Dev

隐藏和禁用展开图标

来自分类Dev

从结果中删除选项

来自分类Dev

展开一个变量,其值包含一个选项和一个带空格的路径名

来自分类Dev

使用AVX指令和-O3编译选项得到错误的结果

来自分类Dev

无法使用带有多个选项和renderInput的AsyncTypeahead查看结果

来自分类Dev

应用中的is.numeric和is.numeric选项显示不同的结果

来自分类Dev

typeahead.js和rails搜索,远程选项不显示结果

来自分类Dev

选择,联接和两个位置子句-结果选项卡为空

来自分类Dev

查找命令选项“ -o = r”和“ / o = r”是否给出相同的结果?

来自分类Dev

使用选项卡和手风琴显示结果

来自分类Dev

教义。查询生成器。如何附加所有类别和所有选项以查询结果

来自分类Dev

展开包含所选项目的TreeView(父)节点

来自分类Dev

Bash shell选项卡完成,请勿展开〜