分配可变变量后如何处理?

How to deal with a mutable variable once it is assigned?

提问人:abdoe 提问时间:10/15/2017 最后编辑:Shepmasterabdoe 更新时间:10/15/2017 访问量:160

问:

从其他问题中,我弄清楚了如何构建复杂的JSON对象。为了让我的JSON对象正确,我需要检查是否已经为此分配了“键”。result_object

由于对象现在无法将其用于其他操作,例如在条件中。&mutif

我该如何处理这样的情况?

#[macro_use]
extern crate serde_json;

fn main() {
    let my_vec = ["foo", "bar", "baz", "foobar", "barfoo"];
    let mut curr_obj = json!(null);
    {
        let mut obj_ref = &mut curr_obj;
        for i in 0..my_vec.len() {
            let name = my_vec[i];

            if curr_obj.is_null() {
                //do stuff
            }
            obj_ref = &mut { obj_ref }[name]; // note the curly braces
        }
    }
    println!("{:?}", curr_obj);
}

错误:

error[E0502]: cannot borrow `curr_obj` as immutable because it is also borrowed as mutable
  --> src/main.rs:12:16
   |
8  |         let mut obj_ref = &mut curr_obj;
   |                                -------- mutable borrow occurs here
...
12 |             if curr_obj.is_null() {
   |                ^^^^^^^^ immutable borrow occurs here
...
17 |     }
   |     - mutable borrow ends here
可变

评论

1赞 Francois Mockers 10/15/2017
当您需要在代码中使用 json 语法编写 json 值时,情况会更好。您应该尝试创建与您的对象匹配的结构,然后解析为此结构:github.com/serde-rs/...github.com/serde-rs/...json!
0赞 abdoe 10/15/2017
@FrancoisMockers - 我也想过这一点。但就我而言,我正在将 xml 转换为 json。由于 xml 可以以非常不同的方式构建,我不确定如何将其表示为结构
0赞 rodrigo 10/16/2017
你不能在借用它之前做,然后只使用变量吗?let is_null = curr_obj.is_null();

答: 暂无答案