mirror of https://github.com/sunface/rust-course
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.6 KiB
2.6 KiB
Rust基本概念
从现在开始,你已经正式踏入了Rust大陆,这篇广袤而神秘的世界,在这个世界中,你将接触到很多之前你都没有听过的概念:
- 所有权、借用、生命周期
- 宏编程
- 模式匹配
类似的还有很多,不过不用怕,一方面,这本书会带你彻底探索这个神秘的大陆,另一方面,我们也有一个非常友善的社区,在里面你可以提问也可以分享自己的所学所思: 社区网址.
本章主要介绍Rust的基础语法、数据类型、项目结构等,学完本章,你将对Rust代码有一个清晰、完整的认识。
在基本概念方面,Rust和其它语言并没有大的区别,它拥有变量、数据、函数等等。
通过下面的代码我们来简单浏览下Rust的语法:
// rust程序入口函数,跟其它语言一样,都是main,该函数目前无返回值
fn main() {
// 使用let来声明变量,进行绑定,a是不可变的
// 此处没有指定a的类型,编译器会默认根据a的值为a推断类型:i32,有符号32位整数
// 语句的末尾必须以分号结尾
let a = 10;
// 主动指定b的类型为i32
let b: i32 = 20;
// 这里有两点值得注意:
// 1. 可以在数值中带上类型:30i32表示数值是30,类型是i32
// 2. c是可变的,mut是mutable的缩写
let mut c = 30i32;
// 还能在数值和类型中间添加一个下划线,让可读性更好
let d = 30_i32;
// 跟其它语言一样,可以使用一个函数的返回值来作为另一个函数的参数
let e = add(add(a, b), add(c, d));
// println!是宏调用,看起来像是函数但是它返回的是宏定义的代码块
// 该函数将指定的格式化字符串输出到标准输出中(控制台)
// {}是占位符,在具体执行过程中,会把a的值代入进来
println!("( a + b ) + ( c + d ) = {}", e);
}
// 定义一个函数,输入两个i32类型的32位有符号整数,返回它们的和
fn add(i: i32, j: i32) -> i32 {
// 返回相加值,这里可以省略return
i + j
}
注意 在上面的
add
函数中,不要为i+j
添加;
,这会改变语法导致函数返回()
而不是i32
,具体参见语句和表达式
还有几点可以留意下:
- 字符串使用双引号
""
而不是单引号''
.Rust中单引号是留给单个字符类型(char
)使用的 - Rust使用
{}
来作为占位符,其它语言可能使用的是%s
,%d
,%p
等,因为println!
会自动推导出具体的类型, 无需手动指定