为什么下面的代码与Rust合并会产生双重可变借用错误?
我希望第一个作用域是第一个块,因为返回的值不能超过这个块,而
else if
如果第一个
if
返回
Some(arr)
.
if let Some(arr) = v.as_array_mut(){
...
} else if let Some(obj) = v.as_object_mut(){
...
} else {
...
}
|
178 | if let Some(arr) = v.as_array_mut(){
| -------------------------- first mutable borrow occurs here
...
195 | } else if let Some(obj) = v.as_object_mut(){
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
| |
| second mutable borrow occurs here
| first borrow later used here
顺便说一句,将每个通话中断为两个通话,这提供了一个完全相似的行为,显然不会喊出错误:
if v.is_array(){
let arr = v.as_array_mut().unwrap();
...
} else if v.is_object(){
let obj = v.as_object_mut().unwrap();
...
} else {
...
}