什么是返回多个异常的Java函数的Rust等效返回值?

アレッ*_*ックス 3 rust

Rust中的函数的适当返回值是什么,在Java中看起来像这样?

void verify(String input) {
  if (!checkInput(input)) return Exception1("....");
  if (!checkInput2(input)) return Exception2("....");
  if (!checkInput3(input)) return Exception3("....");
}
Run Code Online (Sandbox Code Playgroud)

我认为它应该是Result<(), &str>Result<bool, &str>.

Mat*_* M. 7

Rust当前的最新技术:

  • a enum表示结果,bool是"最简单" 的结果
  • an Option,封装结果,并在出错时不提供详细信息
  • a Result<R, E>封装结果或错误

您提出的功能是一项独特的挑战,它可以表示为:

  • Result<(), Error>Error是任何你希望它是(&str可能是太严格,或者不规整不够)
  • Option<Error>如果你反转这个函数,那就是让它查找错误而不是评估没有错误

要么看起来很好,Result<(), Error>更容易服从?等.

  • 不会`Result <(),CustomError>`是一个很好的选择,其中`CustomError`是一个Enum,状态为'Exception1`到`Exception3`?这些状态当然可以包含一个字符串.但是这样你就可以匹配调用函数中的所有不同情况. (2认同)