@ bình luận Huon của
Bạn đã thử bắt ItemKind :: Mod trong github.com/llogiq/flamer/blob/... và iterating trên nội dung của nó (đệ quy)?
đã được bật - Tôi vừa thêm một cam kết xử lý các mục và đặc điểm bằng cách đi bộ. Tôi cũng sẽ có thể thêm mã để đi bộ chức năng để xử lý các mục bên trong và fns.
Mã này trông như thế này:
fn flame_item(i: &Item) -> Item {
let base = i.clone();
Item {
node: match i.node {
ItemKind::Mod(ref m) =>
ItemKind::Mod(flame_mod(m)),
ItemKind::Trait(unsafety, ref generic, ref bounds, ref tis) =>
ItemKind::Trait(unsafety,
generic.clone(),
bounds.clone(),
flame_items(tis)),
.. // other item types as usual: items, traitimpls, implitems
_ => return base
},
..base
}
}
fn flame_mod(m: &Mod) -> Mod {
Mod {
inner: m.inner,
items: m.items.iter().map(|i| P(flame_item(i))).collect()
}
}
fn flame_items(items: &[TraitItem]) -> Vec<TraitItem> {
items.iter().map(flame_trait_item).collect()
}
Chính xác những gì bạn mong đợi thuộc tính thùng để làm gì? Chèn cuộc gọi vào mọi chức năng của thùng? –
Bạn đã thử bắt 'ItemKind :: Mod' trong https://github.com/llogiq/flamer/blob/f4828cc91768109fa66f8cbbe57a285c0477c436/src/lib.rs#L29 và lặp lại nội dung của nó (đệ quy)? – huon
@Lukas Kalbertodt: chính xác. – llogiq