Post

Como Integrar Rust com Python para Desenvolvimento de Aplicações

Introdução

Integrar Rust com Python pode unir o desempenho do Rust com a simplicidade do Python. Usando ferramentas como maturin e pyo3, é possível criar extensões em Rust que podem ser chamadas diretamente de um código Python. Neste artigo, veremos como fazer essa integração com exemplos práticos.

Passo 1: Configurar o Ambiente

Primeiro, precisamos instalar o maturin. Ele facilita a construção e publicação de pacotes Python escritos em Rust.

1
pip install maturin

Crie um novo projeto Rust:

1
2
cargo new --lib my_rust_lib
cd my_rust_lib

Adicione as dependências no Cargo.toml:

1
2
3
4
5
6
7
8
9
10
11
12
13
[package]
name = "my_rust_lib"
version = "0.1.0"
edition = "2021"

[dependencies]
pyo3 = { version = "0.22.0", features = ["extension-module"] }

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

[package.metadata.maturin]
name = "my_rust_lib"

Passo 2: Escrever o Código Rust

No arquivo src/lib.rs, escreva o seguinte código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use pyo3::prelude::*;

/// Função que será chamada a partir do Python
#[pyfunction]
#[pyo3(signature = (a, b))]
fn sum_as_string(a: i64, b: i64) -> PyResult<String> {
    Ok((a + b).to_string())
}

/// Módulo Python
#[pymodule]
fn my_rust_lib(m: &Bound<'_, PyModule>) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(sum_as_string, m)?)?;
    Ok(())
}

Passo 3: Compilar e Testar

Compile o pacote usando maturin:

1
maturin develop

Isso irá compilar a biblioteca Rust e instalá-la no ambiente Python atual. Agora, você pode testar a integração criando um script Python:

1
2
3
4
import my_rust_lib

result = my_rust_lib.sum_as_string(5, 3)
print(result)  # Output: 8

Veja o projeto completo aqui.

Entendendo os componentes utilizados

  • pyo3::prelude::*: Importa os itens necessários para a integração com Python.
  • #[pyfunction]: Anota a função para que ela possa ser chamada do Python.
  • #[pymodule]: Define um módulo Python que expõe funções ou estruturas Rust.
  • maturin develop: Compila e instala a biblioteca Rust como um módulo Python.

Conclusão

Integrar Rust com Python pode melhorar significativamente o desempenho de aplicações críticas, enquanto mantém a simplicidade e a flexibilidade do Python. Usando maturin e pyo3, esse processo torna-se simples e eficiente. Experimente essa integração no seu próximo projeto para aproveitar o melhor dos dois mundos!

This post is licensed under CC BY 4.0 by the author.