我有以下代码:
let (_, expression) = arg.clone();
match expression.node {
ExprLit(_) => (),
_ => arguments.push(arg),
}
但是,我们不需要克隆arg
。
我试图避免克隆这个变量,我想出了这个解决方案:
{
let (_, ref expression) = arg;
if let ExprLit(_) = expression.node {
return;
}
}
arguments.push(arg);
但我不喜欢它(额外的花括号并使用return
)。
在这种特殊情况下是否有另一种解决方案?
答案 0 :(得分:3)
您可以访问元组的元素,就好像它们是编号的结构字段(从零开始),即没有模式匹配,这样就无需克隆或创建新范围。
if let ExprLit(_) = arg.1.node { ... }