本文专栏:Rust学习
目录
一,Rust环境搭建
本博客只将在windows上的开发环境的搭建。
1,C++环境安装
Rust依赖于C++编译环境,安装Rust之前,需要安装visual studio。
链接:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具
2,Rust下载
链接:Rust 程序设计语言https://www.rust-lang.org/zh-CN
点击"马上开始"
3,Rust安装
下载之后,双击打开,如下图:
输入1,按回车,等待安装即可。
rustup-init.exe 是 Rust 的安装和管理工具,默认情况下,它会同时安装这些工具:rustc,rust-std,cargo,rust-docs,rustfmt,clippy。其中,rustc 是 Rust 的编译工具,cargo 是 Rust 的包管理工具。
安装结束:
4,Rust环境检测
查看Rust版本
rustc --version
rustc -V
查看cargo版本
cargo --version
cargo -V
Rust更新
rustup update
二,创建Rust项目
1,rustc
rustc只适合于一些小项目,在大项目中需要用到cargo
Rust代码使用.rs后缀,使用vscode 写代码
右键文件名,打开终端
编译代码,使用rustc命令编译
rustc helloword.rs
2,cargo
cargo是rust的包管理器和构建系统,创建项目命令如下:
cargo new 项目名
项目名是hello_cargo,也会创建一个目录hello_cargo
编译
cargo build
运行
cargo run
在命令行中用cargo build进行编译,编译后会生成一个target文件夹,其中debug文件中有可执行程序hello_cargo.exe
三,输出到命令行
Rust输出到命令行的方式有两种,print!和println!,后者在输出的时候会加上一个换行符。
这两个函数时宏定义!!!
使用这两个函数打印信息的时候,第一个参数是格式字符串,后面一串是可变参数,在C语言printf中"%+字母"表示占位符,而在Rust中,使用'{ }'
fn main() {
let a = 12;
println!("a is {}", a);
}
运行结果是:
a is 12
在 {} 之间可以放一个数字,它将把之后的可变参数当作一个数组来访问,下标从 0 开始。
println!("a is {0}, a again is {0}", a);
如果想要输出{ 或者 }时,可以通过{{ 和 }} 分别转义代表{ 和 }
四,Rust基础语法—变量与可变性
1,变量
声明变量使用let关键字
默认情况下,变量是不可变的(Immutable)
示例:
fn main() {
println!("Hello, world!");
let a=10;
println!("a is {}",a);
}
a是不可变变量
如果要修改变量a,就会报错
fn main() {
println!("Hello, world!");
let a=10;
println!("a is {}",a);
a=20;
}
不可以对不可变的变量两次赋值。
如果想要修改变量a的值,需要将a的属性设为可变变量。
声明变量时,在变量前加上mut,就可以使变量可变。
fn main() {
println!("Hello, world!");
let mut a=10;
println!("a is {}",a);
a=20;
println!("a is {}",a)
}
2,常量与不可变变量的区别
常量(constant):常量在绑定值以后也是不可变的。
它与不可变变量的区别:
- 不可以使用 mut修饰,常量永远是不可变的
- 常量声明需要使用const关键字,同时它的类型必须被标记
- 常量只可以绑定 到常量表达式,无法绑定到函数的调用结果或只能在运行时才能计算出的值
常量定义
const a: i32=123 //类型为i32(32位有符号整数)
虽然 Rust 有自动判断类型的功能,在声明变量的时候,也可以指明类型
let a: u64=123
这声明a的类型为u64(64位无符号整数),如果不声明,a 将自动被判断为有符号 32 位整型变量
3,隐藏(Shadowing)
可以使用相同名字声明新的变量,新的变量就会隐藏(shadow)之前的同名变量。
fn main()
{
let x=5;
//隐藏
let x=x+1;
println!("x is {}",x);
}
还有,声明的新变量,可以与之前的变量类型不同
fn main()
{
let str="hello world";
println!("str is {}",str);
let str=5;
println!("str is {}",str);
}