Rust is installed now. Great!
To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).
To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.
This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env" # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish" # For fish
source $"($nu.home-path)/.cargo/env.nu" # For nushell
基础数据类型(primitive types)#
intro#
整型,分为无符号、有符号,用u/i区分,宽度在8-128之间,也就是
u8
,u16
,u32
,u64
,u128
,i8
,i16
,i32
,i64
,i128
;浮点型,分
f32
和f64
,也就是单精度float
和双精度double
布尔型,占 1 byte;
char, 占 4 byte。注意,rust中的char代表一个unicode值而不是ascii。
基础类型的字面量(literal)写法#
- 数字前可以加一个负号;加正号属于error; 加多个负号属于warning, 因为会被误解为操作符,应使用括号:
-(-11)
- 数字前加
0x
表示十六进制,0o
八进制,0b
二进制 - 数字后可以加数据类型来固定字面量的类型,如
11.4f64
,2u8
; - 布尔变量只能是
true
或false
。将布尔变量赋值为数字是error; char
是单引号括起的字符。注意char
中符号的数值和ascii
不一样。如果想要利用符号的ascii
数值,应该在char
字面量前加上b
(byte)前缀,如b'a'
,这是u8
类型。如果是字符串,如b"hello"
, 就是u8
数组。
变量声明与使用#
let x: u8 = b`a`;
let x = 6; // 自动推断类型
x = 5 // wrong!变量默认不可变
let x = 5; // right!复写变量
// 在identifier前面加上`mut`(mutable)关键字使变量可变
let mut y = 1;
y = 2;
类型转换#
Rust 是类型安全的语言。这意味着不存在隐式转换!若要转换,必须使用as
关键字。
let decimal = 65.4321_f32;
// 错误!不提供隐式转换
let integer: u8 = decimal; // ERROR
// 使用as显式转换
let integer = decimal as u8; // 该转换会丢失数值精度
language lawyer: 显示转换可行性的表格如下。
数组#
定义#
// 一般定义方式
let a: [u8; 2] = {1, 1};
// 使用类型推导
let b = [1, 2, 3]; // [i32; 3]
// 重复初始化,相当于一个for loop
let c = [0;114] // 将114个元素赋值为0
访问#
形如a[1]
。注意如果越界访问,运行时必定error而不是ub.
切片#
切片是指向数组特定部分的一个指针,其长度就是切下的长度,其定义方式:let slice: &[type] = &array[a..b]
,其中type
是数组中元素的类型,array
是被切的数组,a
和b
是数组索引,切片不包含b
,包含a
.
let a: [i32; 4] = [0, 1, 2, 3];
let s: &[i32] = &a[1..3]; // s: [1, 2]