如何在Rust中将可变向量作为函数参数传递

 ytm5295526049760 发布于 2022-12-28 08:07

我正在尝试学习生锈,所以我正在实施一个只评估Collat​​z猜想的小程序.作为这个的一部分,我有一个函数,我递归调用,我想存储正在评估的当前数字,确定它是奇数还是偶数(或如果它只是一个1终止),执行猜想的那个分支然后用新号码打电话给自己.要做到这一点,我想将一个向量传递给这个函数并将当前数字推送到该向量上,但我很难理解如何传递一个可变向量引用.

这是我的代码:

fn evaluate_conjecture(number_to_be_evaluated: u64, mut intermediate_results: &Vec) -> u64 {
    intermediate_results.push(number_to_be_evaluated);

    if number_to_be_evaluated == 1 {
        0
    } else if number_to_be_evaluated % 2 == 1 {
        let odd_step_result = perform_odd_conjecture_step(number_to_be_evaluated);
        evaluate_conjecture(odd_step_result, intermediate_results) + 1
    } else {
        let even_step_result = perform_even_conjecture_step(number_to_be_evaluated);
        evaluate_conjecture(even_step_result, intermediate_results) + 1
    }
}

fn perform_odd_conjecture_step(_: u64) -> u64 {
    unimplemented!()
}

fn perform_even_conjecture_step(_: u64) -> u64 {
    unimplemented!()
}

这是我主要的相关部分

fn main() {
    let input_number = 42;
    let mut _intermediate_results: Vec;
    let number_of_steps = evaluate_conjecture(input_number, &_intermediate_results);
}

这是我得到的错误

error[E0596]: cannot borrow `*intermediate_results` as mutable, as it is behind a `&` reference
 --> src/main.rs:2:5
  |
1 | fn evaluate_conjecture(number_to_be_evaluated: u64, mut intermediate_results: &Vec) -> u64 {
  |                                                                               --------- help: consider changing this to be a mutable reference: `&mut std::vec::Vec`
2 |     intermediate_results.push(number_to_be_evaluated);
  |     ^^^^^^^^^^^^^^^^^^^^ `intermediate_results` is a `&` reference, so the data it refers to cannot be borrowed as mutable

我的问题是,如何将此向量传递给函数,以便每次调用函数时都可以对其进行修改

1 个回答
  • &T 是一个不可变的引用.

    &mut T 是一个可变的参考.

    改变你的&Vec<u64>&mut Vec<u64>&_intermediate_results&mut _intermediate_results.

    这是一个相当完整的文件; 我建议你阅读文档,如果你没有 - 它解释了很多.

    2022-12-28 08:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有