跳到主要内容

Rust

跟着Rust官方中文文档学习。

1. Hello World

学习任何一门语言,都是从Hello World开始。

fn main() {
println!("Hello Rust!!!");
}

2.Cargo

首先,了解下Cargo。Cargo是一个包管理系统,也是项目管理系统,也是一个构建工具。感觉和Maven或者是npm差不多。

通过官方安装Rust的安装方式,默认会安装cargo。

2.1 使用Cargo创建项目

安装Rust,默认会安装Cargo,在终端通过命令,查看Cargo是否安装成功。

cargo --version

在终端使用Cargo命令创建Rust项目。(创建名为 hello-rust 的项目)

cargo new hello-rust

创建好的项目结构如下:

hello-rust
|
|-src
|- main.rs
|-.gitignore
|-Cargo.lock
|-Cargo.toml
  • src: 源代码都在这里编写
  • .gitignore 配置git忽略的文件
  • Cargo.lock 记录依赖版本的(不要手动更改)
  • Cargo.toml Cargo项目的描述文件,类似Maven中的pom.xml或者npm项目的package.json,在里面配置项目的元信息,引入的依赖库等

2.2 Cargo的常用命令

  1. 创建项目
cargo new xxx
  1. 构建项目
cargo build
  1. 构建并运行
cargo run
  1. 检查错误(构建项目而不生成二进制文件)
cargo check

3. 变量和可变性

3.1 变量

Rust是一门静态类型语言,也就是所谓的强类型编程语言。变量在声明时确定数据类型后,不可以被赋予其它数据类型的值。

Rust支持类型推断,在声明变量时,可以显式指定变量的数据类型,也可以隐式推断数据类型,编译器会根据变量的初始值推断出变量的数据类型。

// 显式声明数据类型
let s1: String = String::from("Hello");
// 根据初始值推断类型
let s2 = String::from("Rust");

在Rust语言中,声明变量使用 let 关键字。但Rust中声明的变量默认是不可变的,也就是 Immutable。这一点很有意思。

具体如下示例所示,先声明一个变量s,然后再将字符串字面值赋值给变量s,这时候就会报错。因为声明的变量默认是不可变的。

fn main() {
let s = "Hello Rust";
// cannot assign twice to immutable variable `s`
s = "Hello Java";
}

要想使变量可变,需要在变量名的前面加上 mut 关键字。

fn main() {
let mut s = "Hello Rust";
s = "Hello Java";
}
提示

变量名的命名方式,使用小写字母。多个单词使用下划线连接。

3.2 常量

声明常量使用 const 关键字。声明常量时必须显式地指定数据类型。常量和不可变变量类似,但是在用法上有区别。

常量不能被改变,所以不能使用 mut 关键字。常量可以在任意作用域中声明,包括全局作用域。常量的值只能是常量表达式,而不能是一个函数的返回值。


4. 数据类型

Rust中的数据类型分为两大类:标量类型和复合类型。

标量(scalar)类型表示单个值。Rust中有四种基本的标量类型:整型、浮点型、字符型、布尔型。

Rust中的整型:

长度有符号无符号类比Java中的数据类型
8biti8u8byte
16biti16u16short
32biti32u32int
64biti64u64long
128biti128u128-
archisizeusize-

有符号表示包含负数,无符号只表示正数。Java中的整型都包含负数。

Rust中的浮点型: |长度|