Metadata-Version: 2.1
Name: pyo2
Version: 0.1.0
Summary: 
License: MIT
Author: david-why
Author-email: david_why@outlook.com
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown

# PyO2: A lightweight method to call Rust code from Python

## Usage

File: *Cargo.toml*

```toml
[package]
name = "mylib"
version = "0.1.0"
edition = "2021"

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

[dependencies]
pyo2 = "0.1.0"
```

File: *src/lib.rs*

```rust
use pyo2::{PyStr, PyVec};

#[no_mangle]
pub extern "C" fn test(name: &PyStr, numbers: &mut PyVec<i64>) {
    println!("Hello, {}!", unsafe { name.as_str_unchecked() });
    println!("Sum of numbers: {}", numbers.iter().cloned().sum::<i64>());
    numbers[0] = 6;
}```

File: *test.py*

```python
from pyo2 import RustDLL

dll = RustDLL('./libmylib.so')

s = 'World'
lst = [1, 2, 3, 4, 5]
dll.test(s, lst)
print(lst)
```

Output:

```text
Hello, World!
Sum of numbers: 15
[6, 2, 3, 4, 5]
```

