#python-bindings #deprecated #generate #wheel #cargo #cbindgen #milksnake

弃用 app cargo-wheel

弃用 - 使用 milksnake 和 cbindgen 生成 Rust crate 的 Python 绑定

4 个版本

0.2.2 2023年3月25日
0.2.1 2022年6月7日
0.2.0 2019年1月10日
0.1.0 2018年11月24日

#8 in #cbindgen

每月 25 次下载

MIT 许可证

16KB
238

cargo-wheel

关于

使用 milksnake 和 cbindgen 生成 Rust crate 的 Python 绑定。

弃用

milksnake 在过去一年中没有太多更新,似乎已被 maturin 取代。我不再推荐使用此 crate。

快速开始

编辑您的 Cargo.toml 并将 crate 类型设置为 cdylib

[lib]
crate-type = ["cdylib"]

在您的库中导出函数或数据结构以使它们对 C 可见。

#[no_mangle]
pub extern fn greet() {
    println!("Hello from Rust");
}

调用 cargo wheel 来调用 cbindgen 并设置 Python 包。

cargo wheel

在生成的 __init__.py 中使用 cffi 来向 Python 暴露功能

from test_lib._native import ffi, lib

def greet():
    lib.greet()

为什么您想使用 cargo-wheel

为了在创建 Rust crate 的 Python 绑定时节省样板代码

为什么您不想使用 cargo wheel

您想从您的 setup.py 而不是反过来调用 cargo 的场景。例如,如果您想在现有的 wheel 中用 Rust 替换 Python 代码。

依赖项

~51MB
~1M SLoC