如何在解构元组时避免克隆?

时间:2015-10-17 22:05:48

标签: rust clone

我有以下代码:

let (_, expression) = arg.clone();
match expression.node {
    ExprLit(_) => (),
     _ => arguments.push(arg),
}

克隆arg(表达式的类型为P< Expr>)。

但是,我们不需要克隆arg

我试图避免克隆这个变量,我想出了这个解决方案:

{
    let (_, ref expression) = arg;
    if let ExprLit(_) = expression.node {
        return;
    }
}
arguments.push(arg);

但我不喜欢它(额外的花括号并使用return)。

在这种特殊情况下是否有另一种解决方案?

1 个答案:

答案 0 :(得分:3)

您可以访问元组的元素,就好像它们是编号的结构字段(从零开始),即没有模式匹配,这样就无需克隆或创建新范围。

if let ExprLit(_) = arg.1.node { ... }