< 返回版块

freewong 发表于 2023-07-19 13:26

看到这样的代码,i32是存储在栈上,引用一个i32是没有意义的事情,这种情况编译器是不是应该给一个警告才是

fn foo(x:&i32){
    println!("{}",x);
}



fn main() {
   
   let x=1;
   foo(&x);  
   
}

评论区

写评论
araraloren 2023-07-19 15:06

借用就是借用,和存在哪里,大小是没有关系的,怎么会没有意义呢

苦瓜小仔 2023-07-19 14:50

i32是存储在栈上,引用一个i32是没有意义的事情

话不要说得那么绝。

  1. &mut i32 很有用
  2. 写泛型代码的时候,谁管你数据在堆还是在栈上。禁止 &i32,怎么去调用 <i32 as Display>::fmt(&i32, &mut Formatter<'_>)
pub trait Display {
    // Required method
    fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>;
}

impl Display for i32 { ... }
ifyuhj 2023-07-19 14:46

首先,i32可以存在堆上,这不就有意义了嘛?

廴壬吉 2023-07-19 14:23

它不是万能的

1 共 4 条评论, 1 页