updateto p20
5.1 - 定义和实例化 struct_哔哩哔哩_bilibili
rust
Rust中的引用有两种类型:借用引用(Borrowing References)和原始引用(Raw References)。 借用引用是Rust中最常见的引用类型,它们以指针的形式指向某个值,并且具有借用规则,用于确保在引用的生命周期内,被引用的值不会被修改或移动。借用引用使用`&`符号表示。 原始引用是一种更底层的引用类型,它们不受借用规则的限制,可以直接操作内存。原始引用使用`*`符号表示。 无论是借用引用还是原始引用,它们在内存中都以指针的形式存储。这种设计使得Rust能够在编译时进行内存安全的检查,避免了空指针和数据竞争等常见的内存错误。
3.2 标量
isize base on the arch of cpu , 64 bits cpu , isize = 64 bits
整数溢出
cargo build --release 发布模式不会检查panic的整数溢出,如果发生,会执行环绕操作, 如u8 =0 - 255 , 256会变成0,257变成1...
cargo build 调试模式会检查
char 占4个字节,编码格式按unicode 'a'
3.3 复合类型 数组和元组 tuple
tuple:
let tup:(i32,i32,u8) = (1,2,3)
or
let (x,y,z) = tup
println!("{}",tup.0,tup.1,tup.2)
数组 data stored in stack not heap
let a:[i32;5] = [1,2,3,4,5]
let a = [3;5] 3个5
3.5
if 是表达式所以放在let右边
let x = if xxx {} else {}; if else要返回同个类型
3.6
loop:
loop也是一个表达式 statement
break + value
while:
for:
range
rev表示reverse
4.1.2 ownership
string in heap
drop:
变量走出作用域会drop
move
data transfer
引用本质就是指针,相当于凭空多了一个值,自然不存在所有权的限制,主要是为了维持rust所有权规则
同一作用域,可变引用只能1个或多个不可变引用
dangling reference 悬空引用 ,空指针
&str 字符串切片