如何在py_class中使用生命周期!在rust-cpython中?

时间:2016-12-31 13:08:48

标签: python rust

我使用rust-cpython和Rust作为Python .so lib。我想创建一个这样的类:

py_class!(class MyType |py| {
    data s: Into<Cow<'a, str>>;

    ....
}

但它不允许使用一生:

error[E0261]: use of undeclared lifetime name `'p`
   |
81 |     data s: Into<Cow<'a, str>>;
   |                      ^^ undeclared lifetime

它不允许写:

py_class!(class MyType<'a> |py| {

有错误:

error: no rules expected the token `<`
   |
79 | py_class!(class MyType<'a> |py| {
   |                        ^

也许我在Rust中不太好,也许rust-cpython不允许它。问题是什么?如何在宏中使用生命周期?

1 个答案:

答案 0 :(得分:2)

来自documentation

  

因为Python代码可以将所有Python对象传递给其他线程,所以data_type必须是Send + 'static

由于类型中的所有内容都必须是'static,因此在类上允许使用生命周期参数是没有意义的。