在下面的函数中,我匹配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) 为什么以下代码在编译时会引发错误?
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)
下面两个版本编译没有问题。
用else声明:
fn test(n: i32) -> Result<i32, &'static str> {
if n == 0 {
Err("error")
}
else {
Ok(n + 1)
}
}
Run Code Online (Sandbox Code Playgroud)用return声明:
fn test(n: i32) -> Result<i32, &'static str> {
if n == …Run Code Online (Sandbox Code Playgroud)