美文网首页
rust的const

rust的const

作者: wangfp | 来源:发表于2023-12-09 18:00 被阅读0次
  • const可以用于全局也可以用于某一具体struct的impl中
  • const修饰的类型要求编译时大小可知
  • const修饰的类型不一定要实现Copy,但其在赋值给局部变量的时候是通过bitewise copy的方式赋值的
struct T();

const C: T = T();

fn main() {
    let a = C;  // 可以通过编译,虽然T没有实现Copy trait
    println!("&a=0x{:x}", &a as *const _ as usize);
    let b = C;  // 可以通过编译,虽然T没有实现Copy trait
    println!("&b=0x{:x}", &b as *const _ as usize);
    let c = a;  // 因为T没有实现Copy trait,因此是一个move操作
    println!("&a=0x{:x}", &a as *const _ as usize);  // 编译报错,因为a的所有权已经被移动
    println!("&c=0x{:x}", &c as *const _ as usize);
}
  • const修饰的常量被赋值为局部变量时,局部变量可以是mut的(其实是一个常量的bitwise copy后得到的新变量)

相关文章

网友评论

      本文标题:rust的const

      本文链接:https://www.haomeiwen.com/subject/eifugdtx.html