Я пытаюсь написать факториальную функцию, но получаю ужасные синтаксические ошибки.Я свел мою проблему к нескольким строкам кода.Я попытался изменить присвоение значения на let value =
, но затем я просто получаю бесконечный цикл.
extern crate num; // 0.2.0
use num::{bigint::BigUint, One};
fn decrease(mut value: &BigUint) {
while value != &BigUint::one() {
value = &(value - BigUint::one());
println!("new value {}", value);
}
}
error[E0597]: borrowed value does not live long enough
--> src/lib.rs:7:18
|
7 | value = &(value - BigUint::one());
| ^^^^^^^^^^^^^^^^^^^^^^^^- temporary value only lives until here
| |
| temporary value does not live long enough
|
note: borrowed value must be valid for the anonymous lifetime #1 defined on the function body at 5:1...
--> src/lib.rs:5:1
|
5 | / fn decrease(mut value: &BigUint) {
6 | | while value != &BigUint::one() {
7 | | value = &(value - BigUint::one());
8 | | println!("new value {}", value);
9 | | }
10| | }
| |_^
= note: consider using a `let` binding to increase its lifetime