Jupyter extension for jupyter notebooks and rust users.
You can define functions in rust and run them as python functions. This extension is built on PyO3 and maturin.
- Python >= 3.7 and pip >= 19.3
- Jupyter notebook
- Rust
- cargo-edit
$ pip install rustdef
Define rust functions,
%%rustdef
#[pyfunction]
fn my_func(x: i64, y: &str) -> i64 {
println!("{}", y);
x + y.len() as i64
}
Add dependencies, (e.g. num
crate)
%rustdef deps add num@0.4.0
Defined dependencies are valid only in the current notebook.
Show dependencies,
%rustdef deps show
num = "0.4.0"
[pyo3]
version = "0.13.2"
features = [ "extension-module",]
pyo3
is included by default.
Roughly, definitions in rustdef are available in python after the following steps.
- Each rustdef magic cell is populated with the module definition of pyo3
- A new crate is generated for the rustdef cell
- The crate is compiled into a python wheel by
maturin
- Install the wheel with
pip
- Functions with
#[pyfunction]
attributes are exported into the interpreter namespace in notebooks - Ready to call the function in notebooks!
maturin
is required.
$ pip install maturin
$ maturin build
$ pip install target/wheels/rustdef-{version}-{python}-{platform}.whl
- execute within rustdef cell
- class/module supports
- customizable module name
- use functions defined in another cell
- verbose flag
- serde support
- windows support