intfinity

Crates.iointfinity
lib.rsintfinity
version0.3.3
sourcesrc
created_at2024-09-03 14:41:25.327064
updated_at2024-09-29 15:47:31.586538
descriptionAn abstraction over numeric types with infinity implemented.
homepage
repositoryhttps://github.com/samarthsoup/intfinity
max_upload_size
id1361719
size57,530
samarth (samarthsushi)

documentation

README

intfinity

intfinity is a Rust crate that provides a generic type for representing and working with both finite and infinite numeric values. It supports operations that automatically handle overflow and underflow, mapping them to positive or negative infinity as appropriate.

Features

  • Generic Infinity Representation: Define numeric types that can represent positive and negative infinity alongside finite values.
  • Checked Arithmetic: Implementations of Add, Sub, Mul, and Div traits with built-in overflow and underflow detection.
  • Custom Traits: Traits like Zero, Negate, Unsigned,CheckedAdd, CheckedSub, CheckedMul, and CheckedDiv allow for extensibility to custom numeric types.

Getting Started

Add intfinity to your Cargo.toml:

[dependencies]
intfinity = "0.3.3"

Example Usage

use intfinity::DoubleInfiniteNumber;

fn main() {
    let a = DoubleInfiniteNumber::new(42);
    let b = DoubleInfiniteNumber::PosInfinity;
    
    let result = a + b;
    
    assert_eq!(result, DoubleInfiniteNumber::PosInfinity);
}

Traits

Intfinity comes with several traits that are essential for working with numeric types:

Zero: Defines the concept of zero for a type.
Negate: Provides a method to negate a value.
CheckedAdd, CheckedSub, CheckedMul, CheckedDiv: Provide arithmetic operations with overflow and underflow checks.

License

This project is under the MIT license.

Commit count: 42

cargo fmt