# 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