你能指定移动的self参数的生存期吗



我有一个新类型的结构:

pub struct Branch<'repo>(Git2Branch<'repo>);

我正在尝试包装一个方法调用:

impl <'repo> Branch<'_> {
pub fn into_reference(self) -> Git2Reference<'repo> {
self.0.into_reference()
}    
}

(这里的Git2BranchGit2Reference是git2机箱中同名类型的别名。(

这无法使用进行编译

error: lifetime may not live long enough
--> git_wrapper/src/branch.rs:38:9
|
6  | impl <'repo> Branch<'_> {
|       ----- lifetime `'repo` defined here
...
37 |     pub fn into_reference(self) -> Git2Reference<'repo> {
|                           ---- has type `branch::Branch<'1>`
38 |         self.0.into_reference()
|         ^^^^^^^^^^^^^^^^^^^^^^^ associated function was supposed to return data with lifetime `'repo` but it is returning data with lifetime `'1`

寿命'1'repo应该是相同的,但我不知道在这种情况下如何(或者是否可能(指定self的寿命。

impl <'repo> Branch<'_> {

与相同

impl <'repo, 'anonymous> Branch<'anonymous> {

因此,字段的生存期'repo和匿名生存期是不相关的——当您试图返回Git2Reference<'anonymous>时,这会导致问题。

你只需要在这里谈论一辈子,所以说:

impl <'repo> Branch<'repo> {

相关内容

  • 没有找到相关文章

最新更新