14得票1回答
如何使用pyo3从Python文件中调用Rust函数?

我正在制作一个电子游戏,其中需要从Python文件中设置Rust对象(例如添加一个带有texture:“”,coords:“”,text:“”,action:“”的按钮)。 我使用pyo3创建来连接Python和Rust。我成功地从我的Rust代码中调用Python脚本,但我找不到如何从Py...

11得票1回答
如何使用PyO3从Python访问Rust迭代器?

我对Rust还不是很熟悉,我的第一个“正式”项目涉及使用PyO3编写Python包装器的小型Rust库。这大多数情况下都很顺利,但我正在努力找出如何将Rust Vec上的惰性迭代器暴露给Python代码。 到目前为止,我一直在收集迭代器产生的值并返回一个列表,这显然不是最好的解决方案。以下是...

11得票1回答
通过使用PyO3创建的Python绑定无法在多个Rust库之间使用类型。

我正在编写一个使用多个库的Rust项目。其中一些库导出类型,由工作区中的其他库使用。除了Rust套件之外,我还想使用pyo3 crate将一些库暴露给Python,并生成Python绑定,这就是我遇到问题的地方。 问题如下。 假设我们有两个Rust库包,producer和consumer。...

8得票3回答
PyO3中自定义结构体的向量

我是一个Rust和PyO3的新手(来自Python),对于更有经验的人可能很明显。 我在PyO3中声明了一个pyclass结构体。 #[pyclass] struct Block { start: i32, stop: i32, } 然后我在一个接受 Block 向量并...

7得票2回答
如何使Cargo显示导致重建的文件?

我正在使用 cargo、maturin 和 pytest 构建一个混合 Python/Rust 项目。在开发过程中,我经常循环执行以下命令: $ cargo test -p mypkg --release $ maturin develop --release $ python -m pyt...

7得票2回答
Python中的键盘中断无法终止Rust函数(PyO3)

我有一个使用PyO3和Rust编写的Python库,其中涉及一些昂贵的计算(单个函数调用最长需要10分钟)。在从Python中调用时如何终止执行? Ctrl+C似乎只能在执行结束后处理,因此基本上是无用的。 最小可重现示例: # Cargo.toml [package] name = ...