Rust“表达式中并非所有控制路径都返回值”

时间:2013-11-21 05:39:44

标签: rust

我有以下代码:

//returns GREATER if x is greater than y
//LESS if x is less than y
//EQUAL if x == y
fn less_or_greater(x: int, y: int) -> &str{
    let result = 
        if x == y {
            "EQUAL"
        }
        else if x > y{
            "GREATER"
        }
        else {
            "LESS"
        }; 
    return result;
}

如何使用不包括return语句的推荐Rust样式从此函数返回?如果我不包含它,我会收到以下编译错误:

test.rc:29:0: 1:0 error: not all control paths return a value
error: aborting due to previous error

我认为这个问题是由于我对“;”缺乏了解在Rust和表达式和语句之间的区别。谢谢!

1 个答案:

答案 0 :(得分:7)

块中的最后一个语句充当其返回值,因此您可以执行

fn less_or_greater(x: int, y: int) -> &'static str {
    if x == y {
        "EQUAL"
    } else if x > y {
        "GREATER"
    } else {
        "LESS"
    }
}