num-rational-parse 0.1.0

A flexible string parsing extension for num_rational::Ratio, supporting fractions, decimals, and scientific notation (inspired by Python's fractions module).
Documentation

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.