herolib_code/
lib.rs

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