开始学rust, 通过边学边总结”速学rust从入门到放弃系列”文章,达到熟练使用rust的目的。普通程序员其实追求深度到后面还是很难的,那么深度不够,那就广度来凑。开整,Let’ s rust
rust环境篇
rust安装
无论使用何种系统, 均可以根据 Rust 官方网站提供的 rustup-init 工具完成 Rust 的安装. rustup-init 下载地址:
https://www.rust-lang.org/zh-CN/tools/install.
网站会自动识别你的操作系统并给出提示, 遵循网站提示一步一步执行即可.
当安装完成后, 可使用以下命令进行测试, 如果正确输出版本号则表明安装已经成功
1rustc --version
2# rustc 1.64.0 (a55dd71d5 2022-09-19)
3
4which rustc #mac 系统默认是装在 ~/.cargo下的
5
6# /Users/mac/.cargo/bin/rustc
7
8ls -al /Users/mac/.cargo/bin
9
10total 268112
11drwxr-xr-x 15 mac staff 510 10 4 23:23 .
12drwxr-xr-x 4 mac staff 136 10 4 23:23 ..
13-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 cargo
14-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 cargo-clippy
15-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 cargo-fmt
16-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 cargo-miri
17-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 clippy-driver
18-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rls
19-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rust-gdb
20-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rust-gdbgui
21-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rust-lldb
22-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rustc
23-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rustdoc
24-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rustfmt
25-rwxr-xr-x 13 mac staff 10555952 10 4 23:23 rustup
开发工具准备
使用 vscode 并配置 rust-analyzer 插件在目前看来是一个比较好的选择.
- 安装 vscode
- 在 vscode 的插件市场中, 安装 rust-analyzer 插件
rust-analyzer 包含代码提示, 代码检查, 自动补全等多种功能.
hello world
main.rs
1fn main() {
2 println!("Hello, world!"); // !宏
3}
1rustc main.rs #生成main 文件
2./main
cargo入门、GDB调试
1cargo new `rs` #生成叫rs的一个项目
2cargo run # 运行
3cargo build #会生成一个target 目录
1[package]
2name = "rs" # build 出来就是一个rs 二进制文件
3version = "0.1.0"
4edition = "2021" # 发布版本 目前是2021
5
6# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
7
8[dependencies]
vscode 安装 Native Debug 插件、CodeLLDB 插件
基本类型、函数、模块基本使用
基本类型
1fn main() {
2 let username="crmao";
3 println!("{}",username);
4 let a:u8=12;
5 let b:i8=127;
6 let c:i32=24;
7 println!("{} {} {}",a,b,c);
8 println!("i8 max_value:{},i8 min_value {}",i8::max_value(),i8::min_value());
9}
10
11/*
12crmao
1312 127 24
14i8 max_value:127,i8 min_value -128
15*/
rust函数建议用 小写可以加下划线的名字
1fn main() {
2 get_something();
3}
4
5fn get_something(){
6 let username="crmao";
7 println!("my name is {}",username)
8}
1#![allow(non_snake_case)] // ,加上这个就不提示
2
3fn main() {
4 GetSomething();
5}
6
7fn GetSomething(){
8 let username="crmao";
9 println!("my name is {}",username)
10}
模块
模块的方法默认是私有的,pub就是公有
1
2fn main() {
3 lib::get_something();
4}
5mod lib { //lib是模块名
6 pub fn get_something(){
7 let username="crmao";
8 println!("my name is {}",username);
9 }
10 }
调用外部文件函数方法
目录如下
1➜ $ tree src
2src
3├── lib.rs
4└── main.rs
lib.rs
1pub mod helper { //模块也要加pub才能被外部调用
2 pub fn get_something(){
3 let username="crmao";
4 println!("my name is {}",username);
5 }
6 }
main.rs
1mod lib;
2fn main() {
3 lib::helper::get_something(); //调用 lib模块下 helper模块的 get_something方法
4}