num-rational-parse

Crates.ionum-rational-parse
lib.rsnum-rational-parse
version0.1.0
created_at2025-12-25 23:08:18.274971+00
updated_at2025-12-25 23:08:18.274971+00
descriptionA flexible string parsing extension for num_rational::Ratio, supporting fractions, decimals, and scientific notation (inspired by Python's fractions module).
homepage
repositoryhttps://github.com/Boslx/num-rational-parse
max_upload_size
id2005034
size38,598
Leonhard Bosch (Boslx)

documentation

README

num-rational-parse

Extension for num_rational providing flexible string parsing for Ratio<T> types.

It allows you to parse:

Usage

Add this to your Cargo.toml:

[dependencies]
num-rational = "0.4"
num-rational-parse = "0.1"

Then import the RationalParse trait:

use num_rational::Ratio;
use num_rational_parse::RationalParse;

fn main() {
    let r = Ratio::<i32>::from_str_flex("3.14").unwrap();
    println!("{}", r); // Prints "157/50"

    let r2 = Ratio::<i32>::from_str_flex("1.2e-2").unwrap();
    println!("{}", r2); // Prints "3/250"
}

The standard from_str implementation in num_rational only supports the numerator/denominator format. num-rational-parse extends this to support decimals and scientific notation.

Note on Precision

Unlike parsing to a floating-point number (like f64) and then converting to a fraction, num-rational-parse parses decimal strings directly into their exact rational representation. This avoids precision loss or rounding errors commonly associated with floating-point math.

License

Licensed under either of

at your option.

Credits

The parsing approach is inspired by Python®'s fractions module.

Trademark Notice

"Python" is a registered trademark of the Python Software Foundation.

Commit count: 0

cargo fmt