0
I (basitleştirilmiş) böyle bir dosya sistemi benzeri bir enum ile yapı, iki yapılar ve BTreeMap, modellenmiş her Dosyada işlem. Bu çalıştı:yinelemeli ziyaret çeteleler
fn process(index: &Dir) {
for (_, child) in index.children {
match child {
Item::File(mut f) => {
let xyz = ...;
f.do_something(xyz);
},
Item::Dir(d) => {
process(&d);
}
}
}
}
ama olsun: Ben de
for (_, child) in index.children.iter() {
çalıştı
error: cannot move out of borrowed content [E0507]
for (_, child) in index.children {
^~~~~
ama sonra ben birkaç kombinasyonları denedi
error: mismatched types:
expected `&Item`,
found `Item`
(expected &-ptr,
found enum `Item`) [E0308]
src/... Item::File(mut a) => {
^~~~~~~~~~~~~~~~~
olsun:
for (_, child) in &(index.children)
for (_, child) in index.children.iter().as_ref()
match(child) { Item::File(&mut f) =>
match(child) { Item::File(ref mut f) =>
ve benzerleri, ancak borç denetçisini mutlu etmenin bir yolunu bulamadılar.
Herhangi bir yardım çok takdir edilmektedir.
Teşekkür ederiz! Açıklama 1'de...() (Kullanmaya başladığı için) kullanmaya çalışmamın nedeni. Kullanım kılavuzunun tamamını & & mut, ref ve * ve bunları kullanabileceğiniz yerlerde oldukça kafa karıştırıcı buldum. İşlev argümanlarında ve arama parametrelerinde kullanıldığında ne yaptığını çok açık, ama asla bir maçtan sonra ... ve/veya maçtan sonra ... – Shu