楼主:
yam276 ('_')
2025-03-19 13:53:09: 从入门到入门
1. String 与 &str
Rust的String储存资料到Stack跟Heap
存在Stack的资料包含指标、字串长度、可储存字符容量
Heap才储存字串本体 存取从Stack的指标去Heap找本体
&str只是一段指向String片段的指标
只包含指标与字串长度 不拥有字串内容与所有权
Rust编译器会确保&str可用
具体作法是 编译阶段确认&str使用时 目标String还没被释放
如果目标String已经被释放 会编译失败
2. Tuple
比C++好用
残忍比较:
Rust:
let x = tup.0; // 取出第一个元素
let tup = (42, 3.14, 'a'); // 编译器知道这是 (i32, f64, char)
let (x, y, z) = tup; // 可以直接赋予
let unit = (); // 空Tuple 这个C++没有
C++:
// 取出第一个元素
auto x = std::get<0>(tup);
// 需要显式指定,或者用auto搭配make_tuple
auto tup = std::make_tuple(42, 3.14, 'a');
// 要用tie赋予
int x;
double y;
char z;
std::tie(x, y, z) = tup;
3. 语句(Statement)与表达式(Expression)
语句没回传值 表达式有
{}也是表达式 可以拿来做奇妙操作
4. loop
let mut counter = 0;
let result = {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
则result = 10 * 2 = 20
'label_1: loop {
// ...
loop {
// ...
break 'label_1 // 直接跳出最外面的
}
}
5. for range
for num in (1..4) {
// num = 1, 2, 3 共三次
}
可以让for执行特定次数