Skip to main content

Module num_rational

Module num_rational 

Source
Available on crate feature num-rational only.
Expand description

Conversions to and from num-rational types.

This is useful for converting between Python’s fractions.Fraction into and from a native Rust type.

To use this feature, add to your Cargo.toml:

[dependencies]
pyo3 = { version = "0.30.0", features = ["num-rational"] }
num-rational = "0.4.1"

Β§Example

Rust code to create a function that adds five to a fraction:

use num_rational::Ratio;
use pyo3::prelude::*;

#[pyfunction]
fn add_five_to_fraction(fraction: Ratio<i32>) -> Ratio<i32> {
    fraction + Ratio::new(5, 1)
}

#[pymodule]
fn my_module(m: &Bound<'_, PyModule>) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(add_five_to_fraction, m)?)?;
    Ok(())
}

Python code that validates the functionality:

from my_module import add_five_to_fraction
from fractions import Fraction

fraction = Fraction(2,1)
fraction_plus_five = add_five_to_fraction(f)
assert fraction + 5 == fraction_plus_five

Re-exportsΒ§

use crate::conversion::IntoPyObject; πŸ”’
use crate::ffi; πŸ”’
use crate::inspect::PyStaticExpr; πŸ”’ experimental-inspect
use crate::sync::PyOnceLock; πŸ”’
use crate::type_hint_identifier; πŸ”’ experimental-inspect
use crate::types::PyType; πŸ”’
use crate::types::any::PyAnyMethods; πŸ”’
use crate::Borrowed; πŸ”’
use crate::Bound; πŸ”’
use crate::FromPyObject; πŸ”’
use crate::FromPyObject; πŸ”’
use crate::Py; πŸ”’
use crate::PyAny; πŸ”’
use crate::PyErr; πŸ”’
use crate::PyResult; πŸ”’
use crate::Python; πŸ”’
use num_bigint::BigInt; πŸ”’ num-bigint
use num_rational::Ratio; πŸ”’

MacrosΒ§

rational_conversion πŸ”’

StaticsΒ§

FRACTION_CLS πŸ”’

FunctionsΒ§

get_fraction_cls πŸ”’
⚠️ Internal Docs ⚠️ Not Public API πŸ‘‰ Official Docs Here