为什么“结果”不需要为mut?

时间:2018-08-18 11:46:02

标签: rust

我正要用锈书来学习锈。我了解的是,我无法分配未声明为mut的变量。所以我想知道为什么此代码有效:

extern crate num_bigint;
use num_bigint::BigUint;

fn main() {
    let n = 10_000;
    println!("{}! = {};", n, factorial_recursive(n));
}

fn factorial_recursive(n: usize) -> BigUint {
    let result: BigUint;
    if n == 0 { result = BigUint::new(vec![1]); }
    else { result = factorial_recursive(n-1) * n; }
    result
}

在一开始,我已经声明了结果mut,但是我得到了一个编译器警告,即mut是不必要的。因此,我删除了它,但感到惊讶的是它仍然有效。 为什么会这样?

PS:我知道,我可以直接从if / else分支返回。我一开始就有这个,但是想在返回之前打印出结果,所以我改变了这个,并得到了关于mut的编译器警告。现在,我想了解这一点。

0 个答案:

没有答案