fix rust ast tool

This commit is contained in:
2025-11-14 18:33:46 +00:00
parent a37516c530
commit 561230d5ac
+19 -1
View File
@@ -90,7 +90,8 @@ fn main() {
for item in &syntax.items {
if let Item::Use(item_use) = item {
let path = path_to_string(&item_use.tree);
let path = use_tree_to_string(&item_use.tree);
decls.push(RustDecl {
name: path.clone(),
type_: "import".to_string(),
@@ -376,3 +377,20 @@ fn generic_param_to_string(param: &syn::GenericParam) -> String {
syn::GenericParam::Const(cnst) => cnst.ident.to_string(),
}
}
fn use_tree_to_string(tree: &syn::UseTree) -> String {
match tree {
syn::UseTree::Path(p) => {
let base = p.ident.to_string();
let nested = use_tree_to_string(&*p.tree);
format!("{}::{}", base, nested)
}
syn::UseTree::Name(n) => n.ident.to_string(),
syn::UseTree::Rename(r) => r.ident.to_string(),
syn::UseTree::Glob(_) => "*".to_string(),
syn::UseTree::Group(g) => {
let items: Vec<String> = g.items.iter().map(use_tree_to_string).collect();
items.join("::")
}
}
}