2016-12-31 4 views
0

Я использую rust-cpython и Rust для Python .so lib. Я хотел бы создать класс, как это:Как использовать времена жизни в py_class! в ржавчине?

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

От documentation:

Because Python code can pass all Python objects to other threads, data_type must be Send + 'static .

Поскольку все внутри типа должны быть 'static, то не было бы никакого смысла позволяя параметр пожизненную на классе.

Смежные вопросы