pub struct Fraction { /* private fields */ }Expand description
A fraction, convertible to Chinese.
Must be created by calling try_new; later, its components can be accessed via the numerator and denominator methods:
use chinese_format::*;
let fraction = Fraction::try_new(8, 3)?;
assert_eq!(fraction.numerator(), 3);
assert_eq!(fraction.denominator(), 8);
Implementations§
Source§impl Fraction
impl Fraction
Sourcepub fn try_new(
denominator: u128,
numerator: i128,
) -> Result<Fraction, ZeroDenominator>
pub fn try_new( denominator: u128, numerator: i128, ) -> Result<Fraction, ZeroDenominator>
Tries to create a new fraction - failing with ZeroDenominator if the denominator is 0.
Please, note: as expected in Chinese, the denominator must be passed first.
The construction only fails when 0 is passed as the denominator:
use chinese_format::*;
let fraction = Fraction::try_new(9, 4)?;
assert_eq!(fraction.numerator(), 4);
assert_eq!(fraction.denominator(), 9);
let error_result = Fraction::try_new(0, 3);
assert_eq!(error_result, Err(ZeroDenominator));
pub fn denominator(&self) -> u128
pub fn numerator(&self) -> i128
Trait Implementations§
Source§impl ChineseFormat for Fraction
Fractions can be infallibly converted to Chinese.
impl ChineseFormat for Fraction
Fractions can be infallibly converted to Chinese.
They are omissible - and converted to 零 - only when the numerator is 0.
use chinese_format::*;
//Positive fractions
let positive_fraction = Fraction::try_new(8, 3)?;
assert_eq!(positive_fraction.to_chinese(Variant::Simplified), Chinese {
logograms: "八分之三".to_string(),
omissible: false
});
assert_eq!(positive_fraction.to_chinese(Variant::Traditional), "八分之三");
//Zero fractions, no matter the denominator
let zero_fraction = Fraction::try_new(8, 0)?;
assert_eq!(zero_fraction.to_chinese(Variant::Simplified), Chinese {
logograms: "零".to_string(),
omissible: true
});
assert_eq!(zero_fraction.to_chinese(Variant::Traditional), "零");
//Negative fractions
let negative_fraction = Fraction::try_new(3, -11)?;
assert_eq!(negative_fraction.to_chinese(Variant::Simplified), Chinese {
logograms: "负三分之十一".to_string(),
omissible: false
});
assert_eq!(negative_fraction.to_chinese(Variant::Traditional), "負三分之十一");
fn to_chinese(&self, variant: Variant) -> Chinese
Source§impl Ord for Fraction
impl Ord for Fraction
Source§impl PartialOrd for Fraction
impl PartialOrd for Fraction
impl Copy for Fraction
impl Eq for Fraction
impl StructuralPartialEq for Fraction
Auto Trait Implementations§
impl Freeze for Fraction
impl RefUnwindSafe for Fraction
impl Send for Fraction
impl Sync for Fraction
impl Unpin for Fraction
impl UnwindSafe for Fraction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more