我正在try 更好地理解&mut self
的生命周期省略和相应的输出参数.
假设我有一个如下形式的函数签名
fn foo(&mut self) -> &mut bar
从the lifetime section in the Rustonomicon开始,我了解到这一数字将扩展到
fn foo<'a>(&'a mut self) -> &'a mut bar
这有一个副作用,即只要相应的对象存在,self
就会被可变地borrow .
我想知道的是,如果我用签名指定一个函数,会发生什么
fn foo<'a>(&mut self) -> &'a mut bar
在我的理解中,&mut self
是省略的,并且根据省略规则获得它自己的输入生存期.所以我们最终会得到像这样的东西
fn foo<'b, 'a>(&'b mut self) -> &'a mut bar
根据省略规则,'b
被分配给所有省略的输出生存期.但'a
并没有被省略.那么生命中的'a
是什么呢?具有这样的签名的代码编译得很好.但我不太理解'a
的终生含义.