我有一个函数,它接受一个Vec,并将零个或多个元素推入它。Vec和传递给函数的引用都是mut。当我试图在返回时获取Vec的长度(以查看推入了多少元素)时,我得到了可怕的错误“不能将'foo'作为不可变的,因为它也被作为可变的来借用”。总的来说,我明白为什么这个错误存在。我 * 不 * 明白为什么在这里有必要。肯定有办法做到这一点--我不可能是第一个尝试过这种方法的人。这是我正在尝试做的一个精简版本,它复制了错误。第一个
mut
csbfibhn1#
不要强制引用的生存期与可变借位的生存期相同。
fn push<'a>(stack: &mut Vec<&'a str>, value: &'a str) { stack.push(value); }
1条答案
按热度按时间csbfibhn1#
不要强制引用的生存期与可变借位的生存期相同。