Rust基本语法¶
rust #基础¶
在 Rust 中,变量默认是不可变的。在变量前加 mut
使其可变。
let apples = 5; // 不可变
let mut bananas = 5; // 可变
猜数字游戏
use std::io;
fn main() {
println!("Guess the number!");
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
println!("You guessed: {guess}");
}
use rand::Rng;
use std::cmp::Ordering;
use std::io;
fn main() {
println!("Guess the number!");
let secret_number = rand::thread_rng().gen_range(1..=100);
loop {
println!("Please input your guess.");
let mut guess = String::new();
io::stdin()
.read_line(&mut guess)
.expect("Failed to read line");
let guess: u32 = match guess.trim().parse() {
Ok(num) => num,
Err(_) => continue,
};
println!("You guessed: {guess}");
match guess.cmp(&secret_number) {
Ordering::Less => println!("Too small!"),
Ordering::Greater => println!("Too big!"),
Ordering::Equal => {
println!("You win!");
break;
}
}
}
}
基本数据类型¶
整型 | 无符号整型 | 浮点型 |
---|---|---|
i8 | u8 | |
i16 | u16 | |
i32 | u32 | f32 |
i64 | u64 | f64 |
i128 | u128 |
char: 为utf8编码,可以使用汉字、emoji
bool: 不能用0
或1
替代表示
元组(tuple)
let tup: (i32, f64, u8) = (500, 6.4, 1);
let (x,y,z) = tup;
println!("The value of y is: {}",y);
let five_hundred = tup.0;
let one = tup.2;
[!note] 元组的遍历(可能有误)
rust for value in tuple.0..=tuple.2 { println!("value is: {}",value) }
数组(array)
let a = [1, 2, 3, 4, 5];
let a:[i32;5] = [1, 2, 3, 4, 5];
let a = [3;5] // let a = [3, 3, 3, 3, 3];
let first = a[0];
浮点数转整数
let a = 3.14;
let b = a as i32;
函数¶
表达式拥有返回值,而语句没有
fn print() {
println!("Hello");
}
fn print_c_value(c: char, value: i32) {
println!("c:{c} value:{value}");
}
fn return_value() -> i32 {
5
}
fn return_value_2(x: i32) -> i32 {
x+1 // 不能加分号
}
逻辑结构¶
if-else
// condition 必须为bool值,不能为0或1
if x == 3 {
} else if x > 3 {
} else if x < 3 {
}
loop
let mut counter = 0;
loop {
counter += 1;
if counter == 10 {
println!("counter is {}", counter)
}
}
从循环返回值
fn main() {
let mut counter = 0;
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};
println!("The result is {result}");
}
The result is 20
loop-lable 标签: ' + name
fn main() {
let mut count = 0;
'counting_up: loop {
println!("count = {count}");
let mut remaining = 10;
loop {
println!("remaining = {remaining}");
if remaining == 9 {
break;
}
if count == 2 {
break 'counting_up;
}
remaining -= 1;
}
count += 1;
}
println!("End count = {count}");
}
while
while x != 0 {
x -= 1;
}
for
let a = [10, 20, 30, 40, 50];
for element in a {
println!("the value is: {element}");
}
for in range
for number in (1..4).rev() { // 这个number默认是mut的
println!("{number}!");
}
println!("LIFTOFF!!!");
后:2.所有权