adding classes
This commit is contained in:
parent
bfafbc6e9f
commit
fbc5b099d6
3
README.md
Normal file
3
README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Python + Rust Playground
|
||||
|
||||
Playing with Pyo3 and Maturin to build Python libraries with Rust
|
@ -1,5 +1,7 @@
|
||||
use pyo3::prelude::*;
|
||||
|
||||
mod types;
|
||||
|
||||
/// Formats the sum of two numbers as string.
|
||||
#[pyfunction]
|
||||
fn sum_as_string(a: usize, b: usize) -> PyResult<String> {
|
||||
@ -17,9 +19,15 @@ fn register_child_module(py: Python<'_>, parent_module: &PyModule) -> PyResult<(
|
||||
/// the `lib.name` setting in the `Cargo.toml`, else Python will not be able to
|
||||
/// import the module.
|
||||
#[pymodule]
|
||||
#[pyo3(name = "py_rust_playground")] // python package name
|
||||
fn py_rust_playground(_py: Python, m: &PyModule) -> PyResult<()> {
|
||||
m.add_function(wrap_pyfunction!(sum_as_string, m)?)?;
|
||||
|
||||
m.add_class::<types::Integer>()?;
|
||||
m.add_class::<types::Number>()?;
|
||||
m.add_class::<types::HttpResponse>()?;
|
||||
m.add_class::<types::MyEnum>()?;
|
||||
|
||||
register_child_module(_py, m)?;
|
||||
Ok(())
|
||||
}
|
25
src/types.rs
Normal file
25
src/types.rs
Normal file
@ -0,0 +1,25 @@
|
||||
use pyo3::prelude::*;
|
||||
|
||||
#[pyclass]
|
||||
pub struct Integer {
|
||||
inner: i32,
|
||||
}
|
||||
|
||||
// A "tuple" struct
|
||||
#[pyclass]
|
||||
pub struct Number(i32);
|
||||
|
||||
// PyO3 supports custom discriminants in enums
|
||||
#[pyclass]
|
||||
pub enum HttpResponse {
|
||||
Ok = 200,
|
||||
NotFound = 404,
|
||||
Teapot = 418,
|
||||
// ...
|
||||
}
|
||||
|
||||
#[pyclass]
|
||||
pub enum MyEnum {
|
||||
Variant,
|
||||
OtherVariant = 30, // PyO3 supports custom discriminants.
|
||||
}
|
Loading…
Reference in New Issue
Block a user