Dear,大家好,我是“前端小鑫同学”,😇长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~
最近在看一下桌面端应用的开发,在看了一些Electron的使用后又了解到了一个更加新颖的Tauri的框架,它在内部使用到了Rust,同时发现最近的一些培训机构也在跟风推Rust的一些引流课程,所以还是需要了解和学习一下Rust的入门知识好支持后续学习Tauri。
C:\Users\用户名\.cargo\bin
配置到环境变量的Path中方便终端命令直接使用。cargo --version
rustc --version
在我们使用Rustup安装的时候默认就安装了Cargo,Cargo是用来构建和管理依赖包的一个工具,我们列举一下Cargo的常用命令。
序号 | 终端命令 | 功能 |
---|---|---|
1 | cargo new | 创建项目并初始化git仓库 |
2 | cargo build | 编译项目(debug),增加--release发布构建 |
3 | cargo run | 编译项目(未编译或源码有修改)& 运行项目 |
4 | cargo check | 仅检查代码,确保可通过编译,比build速度快 |
6 | cargo publish | 发布自定义库 |
我们可以在crates.io上找到我们需要用到的第三方库,我们也可以将自己编写的自定义库发布到crates.io。
通过使用cargo new hello-rust
来创建一个新的项目,下面是生成的目录结构;
hello-rust
|- Cargo.toml
|- src
|- main.rs
运行cargo run
就可以在终端看到经过了编译执行到输出我们熟悉了Hello, world!。
注:Cargo.toml文件中记录了项目名称,版本号,Rust版本和依赖的配置,等同于NodeJs开发中的package.json,Android开发中的AndroidManifest.xml。
&
取地址符;代码详解:
// 使用use关键字导入标准库/其他库
use std::io;
fn main (){
// !代表是宏与函数不同
println!("请输入一个数字");
// 使用mut来声明可变变量,仅使用let定义的变量没办法二次赋值
// ::代表new是String的关联函数,类同Java或其他语言中的静态方法
let mut guess = String::new();
// 通过在标准库导入io模块来读取终端输入
// expect:会在程序异常时执行
// &guess:表示我们在此使用guess的引用,它们指向内存的同一块空间
// &mut:表示此处的接收的引用也是可变的
io::stdin().read_line(&mut guess).expect("读取失败");
// 通过{}占位符来输出guess
println!("输入的数字是:{}", guess);
}
复制代码
注:你会看到在我们第二次执行cargo run
的时候没有Compiling信息的输出,这是因为我们再次执行的时候没有源码被修改,合理减少编译来加快执行。
依赖名 = version
的格式配置到Cargo.toml文件中的[dependencies]
下方;cargo build
将执行安装,当然我们安装了VSCode插件就自动安装完成了并会自动更新Cargo.lock文件来锁定依赖的详细版本,切勿手动修改。rand = "0.8.4"
配置到[dependencies]
后等待插件安装或手动执行cargo build
;use rand::Rng;
文档中的示例(rust-random.github.io/book/guide-…):
初次感觉Rust的语法跟其他的编程语言差别还是挺大的,不过&
取地址符的使用看起来会更清晰,也有感觉啰嗦的地方,后续还准备写一些Rust的语法的使用来整体的体验一下这款高效,高可靠的编程语言的设计。