Expand description
§Steel Decimal
A Rust library that provides decimal arithmetic support for the Steel programming language. This crate transforms Steel scripts to use high-precision decimal operations and provides function registration utilities for Steel VMs.
§Quick Start
§Basic Usage
use steel_decimal::SteelDecimal;
use steel::steel_vm::engine::Engine;
// Create a new Steel Decimal engine
let steel_decimal = SteelDecimal::new();
// Transform a script
let script = "(+ 1.5 2.3)";
let transformed = steel_decimal.transform(script);
// Result: "(decimal-add \"1.5\" \"2.3\")"
// Register functions with Steel VM
let mut vm = Engine::new();
steel_decimal.register_functions(&mut vm);
// Now you can execute the transformed script
let result = vm.compile_and_run_raw_program(transformed);§With Variables
use steel_decimal::SteelDecimal;
use steel::steel_vm::engine::Engine;
use std::collections::HashMap;
let mut variables = HashMap::new();
variables.insert("x".to_string(), "10.5".to_string());
variables.insert("y".to_string(), "20.3".to_string());
let steel_decimal = SteelDecimal::with_variables(variables);
let script = "(+ $x $y)";
let transformed = steel_decimal.transform(script);
let mut vm = Engine::new();
steel_decimal.register_functions(&mut vm);§Selective Function Registration
use steel_decimal::FunctionRegistryBuilder;
use steel::steel_vm::engine::Engine;
let mut vm = Engine::new();
FunctionRegistryBuilder::new()
.basic_arithmetic(true)
.advanced_math(false)
.trigonometric(false)
.register(&mut vm);Re-exports§
pub use parser::ScriptParser;pub use registry::FunctionRegistry;pub use registry::FunctionRegistryBuilder;pub use utils::TypeConverter;pub use utils::ScriptAnalyzer;pub use utils::DecimalPrecision;pub use utils::ConversionError;pub use functions::*;
Modules§
Structs§
- Steel
Decimal - Main entry point for the Steel Decimal library