美文网首页
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