榆社网站建设,asp.net mvc 5 网站开发之美,wordpress主题带会员,网站备案域名需要解析到备案服务器吗一、cargo是什么
Cargo是Rust的构建工具和包管理器。 Cargo除了创建工程、构建工程、运行工程等功能#xff0c;还具有下载依赖库、编译依赖等功能。 真正编写程序时#xff0c;我们不直接用rustc#xff0c;而是用cargo。
二、使用cargo
#xff08;一#xff09;使用…一、cargo是什么
Cargo是Rust的构建工具和包管理器。 Cargo除了创建工程、构建工程、运行工程等功能还具有下载依赖库、编译依赖等功能。 真正编写程序时我们不直接用rustc而是用cargo。
二、使用cargo
一使用Cargo创建项目 回到projects目录。运行以下命令
$ cargo new hello_cargo
$ cd hello_cargocargo new命令新建了名为hello_cargo的目录。 目录结构如下
$ tree .
├── .git
├── .gitignore
├──Cargo.toml
└──src└──main.rs源文件存放在src目录中。 项目根目录只存放README、license信息、配置文件和其他跟代码无关的文件。
现在打开src/main.rs看看
fn main() {println!(Hello, world!);
}二构建并运行Cargo项目 1.使用cargo build 在hello_cargo目录下输入下面的命令来构建项目
$ cargo build这个命令会创建一个可执行文件target/debug/hello_cargo。由于默认的构建方法是调试构建debug buildCargo会将可执行文件放在名为debug的目录中。
运行可执行文件
$ ./target/debug/hello_cargo2.使用cargo run 可以使用cargo run在一个命令中同时编译并运行生成的可执行文件
$ cargo run使用cargo run方便得多所以大多数开发者会使用cargo run。
3.使用cargo check 该命令快速检查代码确保其可以编译但并不产生可执行文件
$ cargo check为什么不需要可执行文件呢因为只是检查错误不必生成可执行文件用cargo check要比cargo build快得多。
三发布release 可以使用cargo build --release来发布项目。这会在target/release而不是target/debug下生成可执行文件。 这可以让Rust代码运行的更快不过也需要消耗更长的编译时间。 这也就是为什么会有两种不同的配置一种是为了开发你需要经常快速重新构建另一种是为用户构建最终程序它们不会经常重新构建并且希望程序运行得越快越好。
四Cargo.toml文件 像下面这样
[package]
name hello_cargo
version 0.1.0
edition 2021
[dependencies]
regex 0.1.41这个文件使用TOML (Tom’s Obvious, Minimal Language) 格式这是Cargo配置文件的格式。 [package]是包片段表明下面的语句用来配置包。 接下来的三行是包的名称、包的版本、使用的Rust版本。 [dependencies]是依赖片段。表明下面语句都是需要的依赖。
在Cargo.toml文件中添加依赖之后Cargo会获取依赖以及依赖的依赖编译并生成 Cargo.lockCargo.lock中包含了所有依赖的版本信息。未来就算regexp的作者升级了该包我们依然会下载Cargo.lock中的版本而不是最新的版本只有这样才能保证项目依赖包不会因为更新导致无法编译。当然你还可以使用cargo update来手动更新包的版本
有三种添加依赖的方法 1.添加官方仓库的依赖 指定版本号 例子
rand 0.3
hammer { version 0.5.0}版本号符合 “x.y.z” 的形式其中x称为主版本major, y称为小版本minor而z称为补丁patch从左到右版本的影响范围逐步降低
^ 指定版本 与 “x.y.z” 不同 ^ 可以指定一个版本号范围然后会使用该范围内的最大版本号。
^1.2.3 : 1.2.3, 2.0.0
^1.2 : 1.2.0, 2.0.0
^1 : 1.0.0, 2.0.0~ 指定版本 ~ 使用该范围内的最小版本号 :
~1.2.3 : 1.2.3, 1.3.0
~1.2 : 1.2.0, 1.3.0
~1 : 1.0.0, 2.0.0* 通配符 这种方式允许将 * 所在的位置替换成任何数字:
* : 0.0.0
1.* : 1.0.0, 2.0.0
1.2.* : 1.2.0, 1.3.0不过crates.io并不允许我们只使用孤零零一个 * 来指定版本号 : *。
比较符 可以使用比较符指定一个版本号范围: 1.2.0121.2.3同时还能组合比较符并通过逗号分隔 1.2, 1.52.添加第三方仓库的依赖 指定git仓库地址 例子
color { git https://github.com/bjz/color-rs }由于没有指定版本Cargo会假定我们使用main分支的最新commit。 你可以使用rev、tag或branch来指定想要拉取的版本。例如下面代码拉取了next分支上的最新commit
[dependencies]
regex { git https://github.com/rust-lang/regex, branch next }任何非tag和branch的类型都可以通过rev来引入例如通过最近一次commit的哈希值引入: rev “4c59b707”再比如远程仓库提供的的具名引用: rev refs/pull/493/head。
3.添加本地的依赖 指定绝对路径或者相对路径 例子
geometry { path crates/geometry }一般来说本地依赖包都是同一个项目内的内部包例如假设我们有一个 hello_world 项目现在在其根目录下新建一个包:
# 在hello_world/ 目录下
$ cargo new hello_utils新建的 hello_utils 文件夹跟 src、Cargo.toml同级现在修改Cargo.toml让hello_world项目引入新建的包:
[dependencies]
hello_utils { path hello_utils }
# 以下路径也可以
# hello_utils { path ./hello_utils }
# hello_utils { path ../hello_world/hello_utils }三、配置cargo
官方仓库的地址默认是crates.io是由Rust官方提供的国内访问不了。 可以修改为国内的镜像地址。
cargo配置文件为 在Windows系统默认为%USERPROFILE%\.cargo\config 在linux系统默认为$HOME/.cargo/config
在配置文件里添加如下代码
[source.crates-io]
replace-with ustc
[source.ustc]
registry sparsehttps://mirrors.ustc.edu.cn/crates.io-index/注意cargo search无法使用镜像。