Collaterally moved error when deconstructing a Box of pairs

前端 未结 2 536
别那么骄傲
别那么骄傲 2020-12-11 18:35

The following two lines:

let x = Box::new((\"slefj\".to_string(), \"a\".to_string()));
let (a, b) = *x;

produce the error:



        
2条回答
  •  佛祖请我去吃肉
    2020-12-11 19:29

    You have stumbled on a limitation on destructuring and boxes. Luckily, it's easy to work around these. All you need to do is introduce a new intermediary variable that contains the whole structure, and destructure from that:

    let x = Box::new(("slefj".to_string(), "a".to_string()));
    let pair = *x;
    let (a, b) = pair;
    

    The second example:

    let pair = *x;
    match pair {
        Tree::Pair(a, b) => Tree::Pair(a, b),
        _ => Tree::Nil,
    };
    

提交回复
热议问题