我发现了一个案例,手动内联函数会改变借用检查器处理它的方式,使其不再编译.据推测,它依赖于函数签名中的信息.如何在内联版本中提供此信息?
让我们'a和'b与寿命'a比较短'b(可写'b: 'a).
假设我有一个p: &'b mut f32.我可以p简单地借(获得&mut p)来获得q: &'a mut &'b mut f32.
&'a mut &'b mut f32相当于&'a mut &'a mut f32因为'b: 'a?然后,我可以取消引用q(with *q)获取r: &'a mut f32.我可以写入f32via r(with *r = something),我可以稍后(在生命之外'a)通过p(with *p)读回值.
以下是一些我认为使用上述顺序的工作代码:
fn reborrow<'a, 'b: 'a>(q: &'a mut …Run Code Online (Sandbox Code Playgroud)