Rust超快无痛入门教程
安装与测试
可以从官网直接下载。下载rustup-init并运行之后,会打开命令行,选1默认安装,然后不出意外就安装完了。
发生意外也没关系,如果是因为网络不通畅导致的问题,可以在powershell命令行运行rustup-init.exe,但在执行之前,需要输入如下指令,将环境变量更改改为国内源
$ENV:RUSTUP_DIST_SERVER='https://mirrors.ustc.edu.cn/rust-static'
$ENV:RUSTUP_UPDATE_ROOT='https://mirrors.ustc.edu.cn/rust-static/rustup'
安装完成后按照惯例查看一下版本,不报错就算成功。
rustc --version
// rustc 1.90.0 (1159e78c4 2025-09-14)
然后新建一个文件main.rs
/*此文件为main.rs
单行注释用//,多行注释用/**/
println打印字符串,加上!会自动换行*/
fn main() {
println!("Hello, world");
}
在命令行中通过rustc编译成可执行文件,就可以运行了。
>rustc main.rs
>main.exe
hello world
变量
rust通过let声明变量,默认情况下,变量的值不可更改;若想要一个可以变的变量,需要用到关键字mut。
fn val_test(){
let a = 1; //声名一个变量
// a = 2; //报错 cannot assign twice to immutable variable
let mut a_mut = 1;
println!("a_mut={}", a_mut); //输出为a_mut=1,{}可把a转为字符串
a_mut = 2;
println!("a_mut={}", a_mut); //输出为a_mut=2
}
fn main(){
val_test();
}
但Rust是强类型语言,变量不可跨数据类型
let mut a = 1;
a = 1.1; //报错,整数不能变浮点
a在创建时,尽管未说明类型,但被自动推导为整型,所以无法变成浮点数。Rust中整型包括有符号和无符号两类,每一类都有8, 16, 32, 64和128位五种。例如
let a:u32 = 25; //a为无符号32位整型
此外,还有isize和usize,将根据计算机架构自动选择32位或者64位。
除了整型之外,还有以下数值类型
- 浮点类型有32位和64位,用
f32, f64表示,默认为64位。 - 布尔型用
bool表示, - 字符型用
char标识,字符类型长度为4字节。 - never类型用
!表示,即无返回类型,类似于void
条件语句和函数
【fn】用于声明函数,如有传入参数或返回值,都标明数据类型;【if, else】则是宇宙通用的条件语句,在rust中,判断条件无需用括号,但代码段必须用【{}】括起来。根据这两条规则,可以写一个阶乘函数
fn fac(x:i32)->i32{
if x>1{
return x*fac(x-1);
}else{
return 1;
}
}
fn main(){
let x = fac(5);
println!("5!={}",x); //测试结果为 5!=120
}
阶乘函数可以写为下面这个更加简化的形式
fn fac(x:i32)->i32{
if x>1{x*fac(x-1)} else{1}
}
这就显得略酷,在rust中,任何{}包含的程序块,尾行只要是不以分号结尾的表达式,即可作为程序块的返回值。在上述阶乘代码中,将这种规则写成了三元表达式的形式,非常简洁。
下面是一个更加通用的案例,将x的赋值过程,写成了基于程序块的函数
fn test_block(){
let x ={
let y=1;
y+2
};
println!("{}",x); //输出为3
// println!("{}",y); //报错
}
fn main(){
test_block();
}
数组和元组
rust提供了数组和元组这些数据类型,创建方法如下
fn test_arr(){
let a = [1,2,3];
println!("{:?}", a); //[1, 2, 3]
let b : [i32; 3] = [1,2,3];
println!("{:?}", b); //[1, 2, 3]
let c = 1..3;
println!("{:?}", c); //1..3
let d: (i32, f64, u8) = (500, 6.4, 1);
println!("{:?}", d); //(500, 6.4, 1)
}
fn main(){
test_arr();
}
上述代码中, a a a是最简单的数组,且rust会自动推断其变量类型为整型; b b b的输出和a一致,但其类型为浮点型; c c c是一个Range类型的自然数列,若进行迭代,其内部也为1,2,3; d d d是元组,内部可以存放不同类型的数据。
循环
rust有三种主要的循环,即条件循环【while】;遍历【for】以及死循环【loop】。死循环loop比较简单,只有遇到【break】才会跳出。
while循环示例如下
fn test_while(a:Vec<i32>){
let mut i = 0;
while i<3{
print!("a[{}] = {}; ", i, a[i]);
i += 1; //即 i = i+1
}
}
fn main(){
let a = vec![1,2,3];
test_while(a);
}
//输出如下
//a[0] = 1; a[1] = 2; a[2] = 3;
【for】循环只有遍历形式,通过遍历Range,也可以实现循环索引。
fn test_for(a:Vec<i32>){
for i in &a{
print!("{} ",i);
}
println!("");
for j in 0..3{
print!("a[{}] = {}; ", j, a[j]);
}
}//在mian中调用函数,后不再说明
//输出如下
//1 2 3
//a[0] = 1; a[1] = 2; a[2] = 3;
上述代码中,第一次对a进行遍历的时候,使用了【&a】这种方案,否则在遍历的过程中,会拿走a的所有权,从而下面第二次遍历无法取出a中的值,导致报错。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)