zfuel

Crates.iozfuel
lib.rszfuel
version0.3.1
created_at2024-12-10 09:45:19.18051+00
updated_at2025-06-27 13:39:57.390137+00
descriptionZFuel types used for a mutual credit accounting system
homepagehttps://github.com/zo-el/zfuel
repository
max_upload_size
id1478289
size81,864
Joel Ulahanna (zo-el)

documentation

README

ZFuel

A high-precision Rust library for handling ZFuel types in mutual credit accounting systems. ZFuel provides fixed-point arithmetic with 6 decimal places of precision, ensuring accurate financial calculations without floating-point rounding errors.

License Rust

Features

  • Fixed-point arithmetic with 6 decimal places precision
  • 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.2.2"

Quick Start

use zfuel::{ZFuel, Fraction};

// Create a ZFuel amount
let amount = ZFuel::from_str("123.456789").unwrap();

// Perform arithmetic operations
let doubled = (amount + amount).unwrap();
let half = (amount * Fraction::new(1, 2).unwrap()).unwrap();

// 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!("Half: {}", half);          // "61.728394"
println!("Fee: {}", fee);            // "1.234567"

Documentation

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:

  1. fuzz_fuel: Basic ZFuel creation and validation
  2. fuzz_fraction: Fraction operations and validation
  3. fuzz_fuel_string: String parsing and validation
  4. fuzz_fuel_operations: Arithmetic operations
  5. fuzz_fraction_operations: Fraction arithmetic
  6. fuzz_fee_calculations: Fee computation
  7. fuzz_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.

Commit count: 0

cargo fmt