14 unstable releases (5 breaking)
| new 0.6.2 | Apr 2, 2026 |
|---|---|
| 0.6.1 | Mar 5, 2026 |
| 0.6.0 | Dec 7, 2025 |
| 0.4.0 | Nov 21, 2025 |
| 0.1.2 | Dec 10, 2024 |
#323 in Cryptography
79 downloads per month
Used in 3 crates
110KB
2K
SLoC
ZFuel
A high-precision Rust library for handling ZFuel types in mutual credit accounting systems. ZFuel provides fixed-point arithmetic with configurable precision (0-6 decimal places), ensuring accurate financial calculations without floating-point rounding errors.
Features
- Variable precision support (0-6 decimal places)
- Type-safe precision handling with validation
- Mixed-precision arithmetic operations
- Full support for positive and negative values
- Precise fee calculations with configurable rates
- String parsing and formatting with full precision
- Comprehensive test coverage including fuzz testing
- No floating-point arithmetic, ensuring exact calculations
- Bounds checking on all operations
- Efficient implementation with zero-cost abstractions
Installation
Add to your Cargo.toml:
[dependencies]
zfuel = "0.4.0"
Quick Start
use zfuel::fuel::{ZFuel, Precision};
use zfuel::fraction::Fraction;
// Create a ZFuel amount (default precision is 6)
let amount = ZFuel::from_str("123.456789").unwrap();
// Create with specific precision
let amount_2dp = ZFuel::new(12345, Precision::new(2).unwrap()); // 123.45
// Perform arithmetic operations
let doubled = (amount + amount).unwrap();
let sum = (amount + amount_2dp).unwrap(); // Automatically uses higher precision
// Calculate fees (1%)
let fee = (amount * Fraction::new(1, 100).unwrap()).unwrap();
// Format as string
println!("Amount: {}", amount); // "123.456789"
println!("Doubled: {}", doubled); // "246.913578"
println!("Fee: {}", fee); // "1.234567"
Documentation
- API Documentation
- Technical Documentation - Detailed implementation details
- CHANGELOG - Version history and changes
Development
Prerequisites
- Rust (nightly toolchain)
- cargo-fuzz
Setup
# Install nightly toolchain
rustup install nightly
# Install cargo-fuzz
cargo install cargo-fuzz
Testing
The project includes comprehensive test coverage:
# Run all tests (unit tests and fuzz tests)
make all
# Run only unit tests
make test
# Run only fuzz tests
make fuzz
# Run specific fuzz tests
make fuzz-fuzz_fuel
make fuzz-fuzz_fraction
make fuzz-fuzz_fuel_string
make fuzz-fuzz_fuel_operations
make fuzz-fuzz_fraction_operations
make fuzz-fuzz_fee_calculations
make fuzz-fuzz_fuel_serialization
Fuzz Testing
The project includes several fuzz tests to ensure robustness:
fuzz_fuel: Basic ZFuel creation and validationfuzz_fraction: Fraction operations and validationfuzz_fuel_string: String parsing and validationfuzz_fuel_operations: Arithmetic operationsfuzz_fraction_operations: Fraction arithmeticfuzz_fee_calculations: Fee computationfuzz_fuel_serialization: Serialization/deserialization
Contributing
Contributions are welcome! Please see our Contributing Guidelines for details.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Dependencies
~4–6.5MB
~118K SLoC