A simple, lightweight Rust crate for fraction arithmetic with automatic reduction to lowest terms.
- Basic arithmetic operations (+, -, *, /)
- Automatic reduction to lowest terms
- Comparison operators
- Conversion to/from integers
- Proper error handling
- Zero-cost abstractions with no dependencies
Add this to your Cargo.toml
:
[dependencies]
fractions = "0.1"
use fractions::Fraction;
fn main() -> Result<(), fractions::FractionError> {
// Create fractions
let half = Fraction::new(1, 2)?;
let third = Fraction::new(1, 3)?;
// Basic arithmetic
let sum = half + third; // 5/6
let difference = half - third; // 1/6
let product = half * third; // 1/6
let quotient = (half / third)?; // 3/2
// Comparisons
assert!(half > third);
assert_eq!(half, Fraction::new(2, 4)?);
// Convert to f64
let value = half.to_f64(); // 0.5
// From integer
let five = Fraction::from(5); // 5/1
Ok(())
}
Run the calculator example:
cargo run --example calculator
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.