Crate steel_decimal

Crate steel_decimal 

Source
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§

functions
parser
prelude
Convenience functions for quick operations
registry
utils

Structs§

SteelDecimal
Main entry point for the Steel Decimal library