The Rust Programming Language
想要更互动的学习体验?测验,高亮,可视化
Rust 程序设计语言
Source Code
Rust编程语言从根本上讲是关于授权的(empowerment)。
处理内存管理、数据表示和并发性的底层细节的“系统级”工作。传统上,这一编程领域被视为神秘莫测的,只有少数经过多年学习以避免其臭名昭著的陷阱的人才能进入。即使是那些实践它的人也要谨慎,以免他们的代码被利用、崩溃或损坏。
需要“深入”到较低级别控制的程序员可以使用Rust做到这一点,而不必承担崩溃或安全漏洞的常见风险,也不必学习变化莫测的工具链的细微之处。更好的是,该语言的设计初衷是引导您自然地编写出在速度和内存使用方面高效的可靠代码。
在Rust中引入并行是一种风险相对较低的操作:编译器将为您捕获典型错误。而且,可以在代码中处理更积极的优化,并确信不会意外地引入崩溃或漏洞。
但是Rust并不局限于低级的系统编程。它的表达能力和人体工程学足以使CLI应用程序、web服务器和许多其他类型的代码编写起来相当愉快
Rust语言有一组仅供该语言使用的关键字,与其他语言一样。记住,不能用这些词作为变量或函数的名称。大多数关键字都有特殊的含义。关键字列表。
默认情况下变量是不可变的。这是Rust为您提供的许多提示之一,可以利用Rust提供的安全性和简单并发性来编写代码。但是,仍然可以选择使变量可变。
当变量是不可变的时,一旦值绑定到名称,就不能更改该值。
fn main() {let x = 5; //let mut x = 5;println!("The value of x is: {x}");x = 6; // 报错:error[E0384]: cannot assign twice to immutable variable `x`println!("The value of x is: {x}");
}
如果代码的一部分基于一个值永远不会改变的假设进行操作,而代码的另一部分改变了该值,那么代码的第一部分就有可能无法实现其设计目的。这类错误的原因很难在事后找到,特别是当第二段代码只在偶尔更改值时。Rust编译器保证当你声明一个值时,它不会改变
尽管变量在默认情况下是不可变的,但是可以通过在变量名前面添加mut
来使它们可变。添加mut还向代码的未来读者传达了意图:代码的其他部分将更改此变量的值。
fn main() {let mut x = 5;println!("The value of x is: {x}");x = 6;println!("The value of x is: {x}");
}
与不可变变量一样,常量是绑定到名称且不允许更改的值,但常量和变量之间有一些区别。
首先,不允许将mut与常量一起使用。常量在默认情况下不只是不可变的——它总是不可变的。使用const
关键字来声明常量,并且必须对值的类型进行注释。
常量可以在任何作用域中声明,包括全局作用域中,这使得它对于代码的很多部分都需要知道的值非常有用。
最后一个区别是,常量只能设置为常量表达式,而不是在运行时计算的值。
#![allow(unused)]
fn main() {
const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3;
}
Rust对常量的命名约定是全部使用大写字母和在单词之间使用下划线。
常量求值
在声明它们的作用域内,常量在程序运行的整个过程中都是有效的。
将整个程序中使用的硬编码值命名为常量,可以将该值的含义传递给将来的代码维护者。如果硬编码的值将来需要更新,那么在代码中只有一个地方需要更改,这也会有所帮助。