基础语法
Rust 的语法和其他语言的语法有着很多的不同,可以说是复杂很多。虽然写一篇将语法的文档非常枯燥(看也是如此),但我还是写在这里,作为字典来查询吧。Rust 的语法,肯定是需要经常回顾的,特别是在现实中,你可能很少会用 Rust 去写一个生产级的项目。
Hello World
免不了俗,还是从 Hello World 的示例开始吧, 先贴代码:
fn main(){
let greeting = "Hello World";
println!("{}", greeting);
}
和大部分编译型语言一样,都是从 main 函数开始执行的。我们定义了一个字符串类型的变量名为 greeting ,值为 Hello World 。然后利用 println!() 宏打印 greeting 这个变量的值。
变量的可变性
需要注意的是,在 Rust 中,变量默认是不可变的,如果要声明为可变,需要加上 mut 关键字:
let mut x = 5;
x = 6;
printf!("x is {}", x);
编译上面的代码,编译器会给出如下警告:
warning: value assigned to `x` is never read
--> src/main.rs:2:13
|
2 | let mut x = 5;
| ^
|
= help: maybe it is overwritten before being read?
= note: `#[warn(unused_assignments)]` on by default
这是告诉我们, x 的初始值 5 在被读取之前就已经被覆写为 6 。可以把 x 的初始值直接写为 6 。由此可见,Rust 的编译器给出了保姆级的提示,并且还会给出代码的修改意见。
函数
接下来我们来介绍函数的写法。
闭包函数
闭包函数是一种匿名函数,可以捕获周围环境中的便利那个的匿名函数,通常用在需要传递行为的场合比如说线程、迭代器和异步编程中。
比如在一个应用程序中,我需要初始化配置。但是整个应用的生命周期中,我只需要初始化一次,就可以使用如下的写法,其包含了一个匿名函数:
use std::sync::Once;
use dotenv::dotenv;
static INIT: Once = Once::new();
pub fn init() {
INIT.call_once(|| {
dotenv().ok();
});
}
闭包语法有几种写法:
// 无参数且不指定返回类型
|| {}
// 有参数但不指定返回类型
|x, y| {}
// 有参数且指定返回类型
|x, y| -> i32 {}
// 有参数但是不使用
|_| {}
Last modified: 10 October 2024