< 返回版块

bestgopher 发表于 2023-08-04 10:24

fn f<'a>(my_vec: &'a mut Vec<&'a i32>, value: &'a i32) {
    my_vec.push(value);
}

fn main() {
    let mut my_vec = Vec::new();
    let i1 = 1;
    let i2 = 2;
    
    f(&mut my_vec, &i1);
    f(&mut my_vec, &i2);
}

为什么会借用可变引用两次呢?


Ext Link: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=daca11853bde4ce2fce1f159aa03cf49

评论区

写评论
作者 bestgopher 2023-08-04 11:41

谢了仔哥

--
👇
苦瓜小仔:

-fn f<'a>(my_vec: &'a mut Vec<&'a i32>, value: &'a i32) {
+fn f<'a>(my_vec: &mut Vec<&'a i32>, value: &'a i32) {
或者等价的
+fn f<'a, 'b>(my_vec: &'b mut Vec<&'a i32>, value: &'a i32) {

一旦你有一个 &'a mut DataStructure<'a>,意味着创建了 DataStructure<'a> 的唯一的、独占引用,于是无法再借用。(永远不要这样写,独占引用不是这样用的)

&mut DataStructure<'a> 则意味着给 DataStructure<'a> 创建任何一个独占引用,它可以 再借

Borrowing something forever

aj3n 2023-08-04 11:06

第一个函数参数改成my_vec: &mut Vec<&'a i32>

苦瓜小仔 2023-08-04 11:00
-fn f<'a>(my_vec: &'a mut Vec<&'a i32>, value: &'a i32) {
+fn f<'a>(my_vec: &mut Vec<&'a i32>, value: &'a i32) {
或者等价的
+fn f<'a, 'b>(my_vec: &'b mut Vec<&'a i32>, value: &'a i32) {

一旦你有一个 &'a mut DataStructure<'a>,意味着创建了 DataStructure<'a> 的唯一的、独占引用,于是无法再借用。(永远不要这样写,独占引用不是这样用的)

&mut DataStructure<'a> 则意味着给 DataStructure<'a> 创建任何一个独占引用,它可以 再借

Borrowing something forever

1 共 3 条评论, 1 页