我使用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
不允许它。问题是什么?如何在宏中使用生命周期?
答案 0 :(得分:2)
因为Python代码可以将所有Python对象传递给其他线程,所以
data_type
必须是Send + 'static
。
由于类型中的所有内容都必须是'static
,因此在类上允许使用生命周期参数是没有意义的。