rust 如何获得修改后的Vec的长度?

bsxbgnwa  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(174)

我有一个函数,它接受一个Vec,并将零个或多个元素推入它。Vec和传递给函数的引用都是mut。当我试图在返回时获取Vec的长度(以查看推入了多少元素)时,我得到了可怕的错误“不能将'foo'作为不可变的,因为它也被作为可变的来借用”。
总的来说,我明白为什么这个错误存在。我 * 不 * 明白为什么在这里有必要。
肯定有办法做到这一点--我不可能是第一个尝试过这种方法的人。
这是我正在尝试做的一个精简版本,它复制了错误。
第一个

csbfibhn

csbfibhn1#

不要强制引用的生存期与可变借位的生存期相同。

fn push<'a>(stack: &mut Vec<&'a str>, value: &'a str) {
    stack.push(value);
}

相关问题