cargo-wheel

Crates.iocargo-wheel
lib.rscargo-wheel
version0.2.2
sourcesrc
created_at2018-11-24 13:23:09.894942
updated_at2023-03-25 15:23:36.601095
descriptionDeprecated - Use milksnake and cbindgen to generate python binding to your Rust crate.
homepage
repositoryhttps://github.com/pacman82/cargo-wheel.git
max_upload_size
id98429
size49,821
Markus Klein (pacman82)

documentation

README

cargo-wheel

About

Use milksnake and cbindgen to generate python binding to your Rust crate.

Deprecated

milksnake has not seen many updates in the last year and seems to have been replaced by maturin. I would not recommend using this crate anymore.

Quick start

Edit your Cargo.toml and set the crate type to cdylib

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

Export functions or datastructures in your library to make them visible to C.

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

Call cargo wheel to invoke cbindgen and set up a python package.

cargo wheel

Use cffi in the generated __init__.py to expose the functionality to python

from test_lib._native import ffi, lib

def greet():
    lib.greet()

Why you want to use cargo-wheel

To save boilerplate if creating python bindings for a Rust crate

Why you do not want to use cargo wheel

Scenarios where you want to invoke cargo from your setup.py rather than the other way around. E.g. If you want to replace python code with Rust in an existing wheel.

Commit count: 15

cargo fmt