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};