问题描述
让我们考虑一下这个结构:
pub struct A<'a> {
inner: &'a mut [u8],}
我想修改inner,以便它引用自身的子片段:
pub fn func (arg: &mut A) {
arg.inner = &mut arg.inner[0..2];
}
但是我收到了终生不匹配错误。我已经尝试过了:
pub fn func <'x,'a> (arg: &'x mut A<'a>) where 'x:'a {
arg.inner = &mut arg.inner[0..2];
}
该函数可以编译,但是...显然,如果我两次使用此函数,则会出现不能两次借用错误:
pub fn func2(arg: & mut [u8]){
let mut a = A{inner: arg};
func(&mut a);
func(&mut a); //Error borrow twice
}
我是一个两周大的rustacean,我还想了解为什么func
的两个版本是错误的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)