1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
//! herolib-code: Code analysis and parsing utilities for Rust source files.
//!
//! This crate provides tools for analyzing Rust codebases, extracting structured
//! information about code elements such as enums, structs, and their methods.
//!
//! # Features
//!
//! - **Directory Walking**: Recursively discover Rust source files in a directory
//! - **Source Parsing**: Parse Rust files using the `syn` crate
//! - **Code Structure Extraction**: Extract enums, structs, methods with documentation
//!
//! # Example
//!
//! ```no_run
//! use herolib_code::parser::CodebaseParser;
//!
//! // Parse a Rust codebase
//! let parser = CodebaseParser::new();
//! let codebase = parser.parse_directory("./src").unwrap();
//!
//! // Iterate over discovered structs
//! for struct_info in &codebase.structs {
//! println!("Found struct: {}", struct_info.name);
//!
//! if let Some(doc) = &struct_info.doc_comment {
//! println!(" Documentation: {}", doc);
//! }
//!
//! for field in &struct_info.fields {
//! if let Some(name) = &field.name {
//! println!(" Field: {} ({})", name, field.ty);
//! }
//! }
//!
//! for method in &struct_info.methods {
//! println!(" Method: {}", method.name);
//! }
//! }
//!
//! // Iterate over discovered enums
//! for enum_info in &codebase.enums {
//! println!("Found enum: {}", enum_info.name);
//!
//! for variant in &enum_info.variants {
//! println!(" Variant: {}", variant.name);
//! }
//! }
//! ```
//!
//! # Modules
//!
//! - [`parser`]: Main parsing functionality for analyzing Rust source code
// Re-export commonly used types for convenience
pub use ;
pub use ;