相关疑难解决方法(0)

从if语句中返回值具有"不匹配类型"错误

在下面的函数中,我匹配a的第一个完整字符&str,如果它是a *,-或者 _是否是返回字符的那个字符,并且_我想要检查该字符是否为空格,'a'否则返回.

fn print_character(text: &str) {
    let character: char = match text.chars().nth(0).unwrap() {
        ch @ '*' | ch @ '-' | ch @ '_' => ch,
        ch @ _ => {
            if !ch.is_whitespace() {
                return 'a';
            }
            ' '
        }
    };

    println!("{}", character);
}
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我得到以下错误:

error[E0308]: mismatched types
 --> src/main.rs:6:24
  |
6 |                 return 'a';
  |                        ^^^ expected (), found char
  |
  = note: expected type `()`
             found type …
Run Code Online (Sandbox Code Playgroud)

rust

1
推荐指数
1
解决办法
2445
查看次数

结果和 if/else/return 语句 E0308 错误

为什么以下代码在编译时会引发错误?

fn test(n: i32) -> Result<i32, &'static str> {
    if n == 0 {
        Err("error")
    }
    Ok(n + 1)
}
Run Code Online (Sandbox Code Playgroud)

以下是错误:

fn test(n: i32) -> Result<i32, &'static str> {
    if n == 0 {
        Err("error")
    }
    Ok(n + 1)
}
Run Code Online (Sandbox Code Playgroud)

下面两个版本编译没有问题。

  1. else声明:

    fn test(n: i32) -> Result<i32, &'static str> {
        if n == 0 {
            Err("error")
        }
        else {
            Ok(n + 1)
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. return声明:

    fn test(n: i32) -> Result<i32, &'static str> {
        if n == …
    Run Code Online (Sandbox Code Playgroud)

if-statement return rust

1
推荐指数
1
解决办法
536
查看次数

标签 统计

rust ×2

if-statement ×1

return ×1