Rust学习笔记——基于官网和Rust语言圣经(一、前期准备)
安装rust
安装
1、官网https://www.rust-lang.org/zh-CN/learn/get-started
2、运行后
选择1会下载Visual Stdio;选择2表示你是高级用户或企业用户;选择3即是采用MinGW编译
选择1
选1表示默认当前配置安装,选2表示自定义这些配置,选3表示取消安装
更新与卸载Rust
更新Rust
rustup update
卸载Rust
rustup self uninstall
自带离线文档 命令为:rustup doc
开发ide为vs code 必备插件rust-analyzer
Hello World
新建项目文件夹用vs code打开
编写Rust程序
程序文件后缀名:rs
文件命名规划:hello_world.rs
(例子)
编译与运行Rust程序
fn main(){
println!("Hello world");
}
编译:rustc main.rs
运行:
-windows: .\main.exe
-Linux/mac: ./main
Rust程序解剖
定义函数:fn main(){}
-没有参数,没有返回
main函数很特别:它是每个Rust可执行程序最先运行的代码
打印文本:println!("Hello,world!");
-Rust的缩进是4个空格而不是tab
-println!是一个Rust macro(宏)
·如果是函数的话,就没有!
-“Hello World”是字符串,它是println!的参数
-这行代码以;结尾
编译和运行时单独的两步
·允许Rust程序之前先编译,命令为:rustc源文件名
-rustc main.rs
·编译成功后,会生成一个二进制文件
-在Windows上还会生成一个.pdb文件,里面包含调试信息
·Rust是ahead-of-time编译的语言
-可以先编译程序,然后把可执行文件交给别人运行(无需安装Rust)
·rustc只适合简单的Rust程序...
Cargo
Hello,Cargo
·Cargo是Rust的构建系统和包管理工具
-构建代码、下载依赖的库、构建这些库...
·安装Rust的时候会安装Cargo
-cargo --version
使用Cargo创建项目
·创建项目:cargo new hello_cargo
-项目名称也是hello_cargo
-会创建一个新的目录hello_cargo
·Cargo.toml
·src目录
-main.rs
·初始化了一个新的Git仓库,.gitignore
-可以使用其它的VCS或不使用VCS:cargo new的时候使用 --vcs这个flag
用vs code打开:
Cargo.toml
·TOML(Tom's Obvious,Minimal Language)格式,是Cargo的配置格式
·[pacakge],是一个区域标题,表示下发内容是用来配置包(package)的
-name,项目名
-version,项目版本
-authors,项目作者
-edition,使用的Rust版本
·[dependencies],另一个区域的开始,它会列出项目的依赖项。
·在Rust里面,代码的包称作crate。
src/main.rs
·cargo生成的main.rs在src目录下
·而Cargo.toml在项目顶层下
·源代码都应该在src目录下
·顶层目录可以放置:README、许可信息、配置文件和其他与程序源码无关的文件
·如果创建项目时没有使用cargo,也可以把项目转化为使用cargo:
-把源代码文件移动到src下
-创建Cargo.toml并填写相应的配置
构建Cargo项目cargo build
·cargo build
-创建可执行文件:target/debug/hello_cargo或target\debug\hello_cargo.exe(Windows)
-运行可执行文件:./target/debug/hello_cargo或.\target\debug\hello_cargo.exe(Windows)
·第一次运行cargo build会在顶层目录生成cargo.lock文件
-该文件负责追踪项目依赖的精确版本
构建和运行cargo项目cargo run
·cargo run,编译代码+执行结果
-如果之前编译成功过,并且源码没有改变,那么就会直接运行二进制文件
cargo check
·cargo check,检测代码,确保能通过编译,但是不产生任何可执行文化
·cargo check要比cargo build快得多
-编写代码的时候可以连续反复的使用cargo check检查代码,提高效率
为发布构建
·cargo build --release
-编译时会进行优化
·代码会运行的更快,但是编译时间更长
-会在target/release而不是target/debug生成可执行文件
·两种配置:
-一个开发
-一个正式发布