**已关闭。**此问题需要debugging details。它目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
去年就关门了。
Improve this question
我正在尝试通过执行thing[thing.len() - 1] = other_thing;
来修改Vec<i32>
。我得到一个错误,告诉我首先借用了一个可变引用,然后借用了一个不可变引用。我找不到解决办法。如何在rust中修改vector的最后一个元素。工作示例:https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=a092f6778df0290de7cee1f2321bf175
1条答案
按热度按时间u4vypkhs1#
你不能同时借用可变和不可变的同一个变量。
当你试图得到向量的长度时,这就是不可变借用发生和恐慌的地方(因为同时你试图改变它的内容,例如。可变借用)
你可以用多种方式来做到这一点。假设你有一个有两个切片的向量
首先,手动计算并从vector中获取最后一项(就像您在版本中所做的那样)
但更惯用的方法是使用
slice/vec
提供的方法并Map返回的Option
要获取最后一项,我们可以使用last_mut(它将返回
Option
)并在该Option
上进行Map,以获取嵌套slice
的最后一项,并将其值更改为20