herolib-code 0.3.13

Code analysis and parsing utilities for Rust source files
Documentation
# rust_builder - Rust Project Builder Module

Build Rust projects with an intuitive builder pattern API.

**Note:** For Rhai scripts, ensure `register_rust_builder_module(engine)` is called during engine initialization.

## Quick Start

```rhai
// Simple release build
let result = rust_builder()
    .release()
    .copy_to_hero_bin()
    .build()?;

print(`Success: ${result.success}`);
```

## Constructor

```rhai
rust_builder()              // Start from current directory
rust_builder_from(path)     // Start from specific path
```

## Configuration (all chainable)

```rhai
// Profile
.debug()                    // Development build (default)
.release()                  // Optimized production build

// Target
.bin(name)                  // Build specific binary
.lib()                      // Build library
.example(name)              // Build example
.all_bins()                 // Build all binaries

// Features
.feature(name)              // Enable single feature
.features([...])            // Enable multiple features
.all_features()             // Enable all features
.no_default_features()      // Disable defaults

// Output
.copy_to_hero_bin()         // Copy to ~/hero/bin
.output_dir(path)           // Copy to custom directory (~ expanded)

// Other
.arg(arg)                   // Add extra cargo argument
.verbose()                  // Enable verbose output
```

## Execute

```rhai
.build()                    // Execute build -> BuildResult
```

## Result

```rhai
result.success              // bool - build succeeded
result.exit_code            // i32 - cargo exit code
result.stdout               // String - build output
result.stderr               // String - error output
result.artifacts            // Array - paths to built files
result.copied_to            // String - where copied (if enabled)
```

## Examples

```rhai
// Build and install
let result = rust_builder()
    .bin("herodo")
    .release()
    .copy_to_hero_bin()
    .build();

if result.success {
    print(`Built and installed to: ${result.copied_to}`);
}

// Debug with verbose output
let result = rust_builder()
    .debug()
    .verbose()
    .build();

print(`Build output: ${result.stdout}`);

// Build from specific path
let result = rust_builder_from("/home/user/project")
    .release()
    .copy_to_hero_bin()
    .build();

// With features
let result = rust_builder()
    .feature("async")
    .feature("tls")
    .release()
    .build();

// Library with all features
let result = rust_builder()
    .lib()
    .all_features()
    .build();

// Custom output directory
let result = rust_builder()
    .release()
    .output_dir("/usr/local/bin")
    .build();

// Tilde expansion in output_dir
let result = rust_builder()
    .release()
    .output_dir("~/bin")
    .build();
```

## Smart Features

- **Auto-discovery**: Walks up directory tree to find Cargo.toml
- **Platform-aware**: Handles binary naming across OS (`.exe` on Windows)
- **Safe copying**: Deletes existing files before copying
- **Permissions**: Sets executable on Unix systems
- **Error handling**: Clear error messages for common issues