2.static关键字.rs


/*
Rust 全局变量(static):
    1.定义如下 static NUM: i32 = 100;
    2.全局变量和常量类似,但是一个重要的区别就是,全局变量不会被内联,在整个程序中,全局变量只有一个实例,也就是说所有的引用都会指向一个相同的地址。
    3.定义全局变量使用关键字static,而定义常量使用const,定义普通变量使用let
    4.和常量不同,全局变量可以定义为可变的(mut)
    5.因为全局变量可变,就会出现被多个线程同时访问的情况,因而引发内存不安全的问题,
      所以对于全局可变(static mut)变量的访问和修改代码就必须在unsafe块中进行定义,比如这样:
        unsafe {
            NUM += 1;
            println!("NUM: {}", NUM);
        }
    6.存储在全局(static)变量中的值必须是Sync,也就是需要实现Sync trait.
    7.和常量相同,在定义全局变量的时候必须进行赋值,且赋值必须是在编译期就可以计算出的值(常量表达式/数学表达式),不能是运行时才能计算出的值(如函数)
    8.通常来讲,如果需要在两者之间进行选择,那就选择常量(const),使用全局变量始终在内存中占据一小块地方,但是常量则可以运行编译期进行优化(内联),不仅可以优化自己的crate,而且如果有其他人使用你的crate,也可以进行优化。
}
*/

fn main() {

    static  NUM:i32 = 100;
    unsafe {
        println!("Hello, world! --- {}",NUM);
    }

}

猜你喜欢

转载自blog.csdn.net/liujiayu2/article/details/114364591