herolib-code 0.3.13

Code analysis and parsing utilities for Rust source files
Documentation
//! 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

pub mod parser;
pub mod rust_builder;

// Re-export commonly used types for convenience
pub use parser::{
    CodeBase, CodebaseParser, EnumInfo, EnumVariant, FieldInfo, FileInfo, MethodInfo,
    ParameterInfo, ParseError, ParseResult, Receiver, StructInfo, Visibility, WalkerConfig,
};

pub use rust_builder::{
    BinaryTarget, BuildProfile, BuildResult, BuildTarget, CargoMetadata, RustBuilder,
    RustBuilderError,
};