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:
- Fractions: `"3/4"`
- Decimals: `"1.25"`
- [Scientific notation]https://en.wikipedia.org/wiki/Scientific_notation#E_notation: `"1.2e-3"`, `"1E5"`

## Usage


Add this to your `Cargo.toml`:

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

Then import the `RationalParse` trait:

```rust
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

 * Apache License, Version 2.0
   ([LICENSE-APACHE]LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
 * MIT license
   ([LICENSE-MIT]LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

## Credits


The parsing approach is inspired by Python®'s [fractions](https://github.com/python/cpython/blob/main/Lib/fractions.py) module.

## Trademark Notice


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