2 个版本
0.1.1 | 2024 年 6 月 25 日 |
---|---|
0.1.0 | 2024 年 6 月 25 日 |
#14 在 #python-module
5KB
78 行
pytype
什么是 pytype。
Pytype 是一个 Rust 的 pyo3 扩展模块,具有许多用于 Python 扩展模块工作的类型。
例如
use pytype::{PyInt, PyFloat, PyList, PyDict};
use pyo3::prelude::*;
/// Not to the Differences
/// Maybe you make Following Function
#[pyfunction]
fn add(a: PyFloat, b: PyFloat) -> PyResult<PyFloat> {
Ok(a + b)
}
实际上,通常类型是一个正常的 Rust 类型,但工作得更好。
PyInt 在 32 位架构和 64 位架构上是否不同。
32 位
#[cfg(target_point_width = "32")]
pub type PyInt = i32;
64 位
#[cfg(target_point_width = "64")]
pub type PyInt = i64;
你为什么要这样做?
通常,你想要一个性能最佳的 Python 模块,在各种架构上都能有最佳的工作表现。
'i64' 在 32 位架构上可能非常慢,但 'i32' 在那里非常快。64 位架构可以用 'i64' 工作得更好,并且可以用它来工作。
PyFloat 也是如此。
32 位
#[cfg(target_point_width = "32")]
pub type PyFloat = f32;
64 位
#[cfg(target_point_width = "64")]
pub type PyFloat = f64;