函数

1
2
3
fn add(i: i32, j: i32) -> i32 {
i + j
}

每一个函数参数都要标识出它的具体类型

返回值:最后一条表达式的返回值,当然我们也可以使用 return 提前返回

1
2
3
4
5
6
7
8
fn plus_or_minus(x:i32) -> i32 {
if x > 5 {
return x - 5
}

x + 5
}

函数没有返回值,那么返回一个 ()

查看更多

数据类型

基本类型

  • 数值类型:
    • 有符号整数 (i8, i16, i32, i64, isize)、
    • 无符号整数 (u8, u16, u32, u64, usize) 、
    • 浮点数 (f32, f64)、以及有理数、复数
  • 字符串:
    • 字符串字面量和字符串切片 &str
  • 布尔类型:
    • truefalse
  • 字符类型:
    • 表示单个 Unicode 字符,存储为 4 个字节
  • 单元类型:
    • () ,其唯一的值也是 ()
  • 发散函数返回类型: !
    • 执行到这时报错

基本类型 - Rust语言圣经(Rust Course)

复合类型

  • 字符串 String
    • 字符串切片的类型标识是 &str&str 是切片)
    • 字符串字面量类型是切片("let s: &str = "Hello, world!"; "
    • UTF-8 编码,也就是字符串中的字符所占的字节数是变化的(1 - 4)
  • 元组
    • let tup = (500, 6.4, 1); 定义
    • let (x, y, z) = tup; 模式匹配结构
    • tup.0; tup.1; tup.2 访问元组
  • 结构体
  • 枚举
  • 数组

查看更多

基本语法

入口函数

1
2
3
fn main(){
// 代码
}

声明变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n main() {
// 编译器会默认根据a的值为a推断类型:i32,有符号32位整数
let a = 10;

// 手动指定类型
let b: i32 = 20;

// 可在数值后带上类型
let b1 = 30i32;

// mut 表示可变的,缩写自 mutable
let mut c = 30i32;

// 数值与类型可添加下划线,增加可读性
let d = 30_i32;

// 以返回值作为变量的值,(返回值也可做为参数)
let e = add(add(a, b), add(c, d));
}

fn add(i: i32, j: i32) -> i32 {
i + j
}

变量可变性

查看更多

toml配置

1
2
3
4
[package]
name = "world_hello"
version = "0.1.0"
edition = "2021"

edition 字段定义了我们使用的 Rust 大版本。

1
2
3
4
5
[dependencies]
rand = "0.3"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }

Cargo.tomlCargo.lock

cargo 的核心文件,它的所有活动均基于此二者。

查看更多