2

我有 2 个 pyclassBlockBlockGroup.

#[pyclass]
struct Block {
    start: i32,
    stop: i32,
}

#[pyclass]
struct BlockGroup {
    blocks: Vec<Block>
}

我是 PyO3 的新手,我已经阅读了有关垃圾收集的文档,但我并没有完全理解它。

如果您的类型拥有对其他 python 对象的引用,则需要与 Python 的垃圾收集器集成,以便 GC 知道这些引用。

鉴于BlockGroup拥有具体Block对象,我是否需要实现自定义垃圾收集?

4

1 回答 1

2

在这种情况下,BlockVec<Block>分别是 rust 内存的一部分,而不是 python 的内存,所以你不需要担心垃圾收集。python 内存中的一个对象例如是Py<Block>.

于 2019-07-19T17:01:36.253 回答