写点什么

Rust 语言中,const 和 static 的区别

作者:Geek_5d0de9
  • 2023-10-07
    北京
  • 本文字数:426 字

    阅读完需:约 1 分钟

在 Rust 语言中,const 和 static 都用于定义常量,但它们之间有一些关键的区别:

1. 生命周期:static 变量在整个程序运行期间都是有效的,它们具有 'static 生命周期。而 const 变量则没有固定的存储位置或生命周期,它们在编译时被内联到使用它们的表达式中。

2. 可变性:static 变量可以是可变的(使用 static mut 关键字),但这通常需要使用 unsafe 代码块,因为并发访问可变静态变量可能会导致数据竞争。而 const 变量则总是不可变的。

3. 初始化:const 变量只能被常量表达式初始化,不能执行任何运行时计算。而 static 变量可以使用任何能在编译时确定的表达式进行初始化,包括函数调用。

4. 类型:const 变量可以是任何类型,包括引用类型,只要该类型可以在编译时被完全确定。而 static 变量必须具有 'static 生命周期,这意味着它们不能包含任何非 'static 生命周期的引用。

总的来说,const 更像是一个在编译时被替换的值,而 static 则是一个在内存中具有固定地址的值。

用户头像

Geek_5d0de9

关注

还未添加个人签名 2022-01-25 加入

还未添加个人简介

评论

发布
暂无评论
Rust语言中,const 和 static 的区别_​Rust_Geek_5d0de9_InfoQ写作社区