如何安全地修改可变切片参考字段?

问题描述

让我们考虑一下这个结构:

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 (将#修改为@)