Boa noite a todos,
Hoje gostava de vos trazer
uma quimera, algo de interessante e muito útil, principalmente
em cenários de prototipagem exploratória ou
para zonas não criticas em termo de performance.
Rust é de alta performance mas o seu desenvolvimento é um pouco mais lento devido ao borrow checker.
Python é de desenvolvimento muito rápido (pseudo-código executável) mas incrivelmente lento (na ordem das 50x a 180x mais lento), tem muitas libs para tudo e mais um par de botas mas tem o GIL (só executa numa única thread código Python).
Imaginem fazer um programa Rust com inline Python de uma forma não intrusiva, em que os dados são partilhados entre Rust e Python!A lib (crate) que vos gostaria de falar hoje é:
inline-python Inline Python code directly in your Rust code
https://crates.io/crates/inline-pythonCódigo de exemplo Rust com inline Python:
use inline_python::python;
fn main() {
let who = "world";
let n = 5;
python! {
for i in range('n):
print(i, "Hello", 'who)
print("Goodbye")
}
}
// Exemplo que cria os dados em Rust e faz o gráfico em Python com a lib MatPlotLib.
use inline_python::python;
fn main() {
let data = vec![(4, 3), (2, 8), (3, 1), (4, 0)];
python! {
import matplotlib.pyplot as plt
plt.plot('data)
plt.show()
}
}
Todos os passos do seu funcionamento e desenvolvimento estão explicados de forma brilhante nesta sequência detalhada de posts neste blog.
Writing Python inside your Rust code - Part 1 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-1/Writing Python inside your Rust code - Part 1A - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-1a/Writing Python inside your Rust code - Part 2 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-2/Writing Python inside your Rust code - Part 3 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-3/Writing Python inside your Rust code - Part 4 - Mara's Blog
https://blog.m-ou.se/writing-python-inside-rust-4/Para estas e outras informações sobre Rust, vejam o meu
pequeno guia:
How to learn modern Rusthttps://github.com/joaocarvalhoopen/How_to_learn_modern_RustObrigado,
Cumprimentos,
João