赞
踩
官网: https://doc.rust-lang.org/cargo/index.html
cargo,简单来说就是python 的pip,nodejs 的npm,rust下的包管理工具。
Cargo用于组织Rust项目,比直接用rustc编译多个源文件更方便。
Rust 由 rustup 工具来安装和管理。 Rust 有一个 6 周的 快速发布过程 并且支持 大量的平台 ,所以任何时候都有很多 Rust 构建可用。 rustup 在 Rust 支持的每一个平台上以一致的方式管理这些构建, 并可以从 beta 和 nightly 发布渠道安装 Rust,且支持额外的交叉编译目标平台。
cargo new project_name --bin # 如果你想写一个普通的项目
cargo new lib_name --lib --vcs none # 如果你想写一个库
cargo build # 如果你想编译,默认会编译到target/debug/project_name下
cargo run # 如果你想编译并运行
cargo build --release # 如果你想发布,这会做很多优化,并编译到target/release/project_name下
cargo update # 如果你想修改Cargo.lock文件的话,运行它
cargo update -p rand # 如果你只是想更新rand版本的话,运行它
cargo test abc # 如果你想做test,运行它
原文链接:https://blog.csdn.net/u010953692/article/details/106464851
rust cargo指定国内镜像
参考URL: https://blog.csdn.net/setlilei/article/details/106204105?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
/root/.cargo新建配置文件config
[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
cargo install cargo-rls-install
cargo rls-install -i nightly-2020-03-19
rustc -V
执行 cargo new hello_cargo --bin
,执行完上面的操作之后,我们切换到hell_cargo目录下,可以看到一个文件(Cargo.toml)和一个目录(src),同时src目录下有一个main.rs文件。
执行 cargo run 就可以看到一行"hello world" 字符串出现在屏幕上
可以使用 cargo run 在一个命令中同时编译并运行生成的可执行文件。当然,也可以使用 cargo run --release 运行发布版本。
demo:
cargo run -p aptos-node --release -- -f /opt/aptos/public_full_node.yaml
当我们通过cargo run运行程序时,会调用target目录下面的可执行程序。
-p: 指定运行target中哪个包
–release: 优化编译,编译时间会变长
–: 双虚线将参数与cargo分开,明确指定参数-f 是传递给应用程序。
因此如果需要将参数传递给应用程序,而不是cargo,需要使用两个虚线将cargo run与参数分开。
[root@dev release]# cargo run -h
cargo-run
Run a binary or example of the local package
USAGE:
cargo run [OPTIONS] [--] [args]...
ARGS:
<args>...
OPTIONS:
-q, --quiet Do not print cargo log messages
--bin [<NAME>] Name of the bin target to run
--example [<NAME>] Name of the example target to run
-p, --package [<SPEC>...] Package with the target to run
-v, --verbose Use verbose output (-vv very verbose/build.rs output)
-j, --jobs <N> Number of parallel jobs, defaults to # of CPUs
--color <WHEN> Coloring: auto, always, never
-r, --release Build artifacts in release mode, with optimizations
--frozen Require Cargo.lock and cache are up to date
--profile <PROFILE-NAME> Build artifacts with the specified profile
--features <FEATURES> Space or comma separated list of features to activate
--locked Require Cargo.lock is up to date
--all-features Activate all available features
--offline Run without accessing the network
--config <KEY=VALUE> Override a configuration value (unstable)
--no-default-features Do not activate the `default` feature
--target <TRIPLE> Build for the target triple
-Z <FLAG> Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for
details
--target-dir <DIRECTORY> Directory for all generated artifacts
--manifest-path <PATH> Path to Cargo.toml
--message-format <FMT> Error format
--unit-graph Output build graph in JSON (unstable)
--ignore-rust-version Ignore `rust-version` specification in packages
--timings[=<FMTS>...] Timing output formats (unstable) (comma separated): html, json
-h, --help Print help information
Run `cargo help run` for more detailed information.
[root@dev release]# cargo run --release -h
cargo-run
Run a binary or example of the local package
USAGE:
cargo run [OPTIONS] [--] [args]...
ARGS:
<args>...
OPTIONS:
-q, --quiet Do not print cargo log messages
--bin [<NAME>] Name of the bin target to run
--example [<NAME>] Name of the example target to run
-p, --package [<SPEC>...] Package with the target to run
-v, --verbose Use verbose output (-vv very verbose/build.rs output)
-j, --jobs <N> Number of parallel jobs, defaults to # of CPUs
--color <WHEN> Coloring: auto, always, never
-r, --release Build artifacts in release mode, with optimizations
--frozen Require Cargo.lock and cache are up to date
--profile <PROFILE-NAME> Build artifacts with the specified profile
--features <FEATURES> Space or comma separated list of features to activate
--locked Require Cargo.lock is up to date
--all-features Activate all available features
--offline Run without accessing the network
--config <KEY=VALUE> Override a configuration value (unstable)
--no-default-features Do not activate the `default` feature
--target <TRIPLE> Build for the target triple
-Z <FLAG> Unstable (nightly-only) flags to Cargo, see 'cargo -Z help' for
details
--target-dir <DIRECTORY> Directory for all generated artifacts
--manifest-path <PATH> Path to Cargo.toml
--message-format <FMT> Error format
--unit-graph Output build graph in JSON (unstable)
--ignore-rust-version Ignore `rust-version` specification in packages
--timings[=<FMTS>...] Timing output formats (unstable) (comma separated): html, json
-h, --help Print help information
Run `cargo help run` for more detailed information.
[root@dev release]#
https://doc.rust-lang.org/cargo/reference/index.html#cargo-reference
二进制目标是可执行程序,可以在编译后运行。 默认二进制文件名是src / main.rs,默认为包的名称。 其他二进制文件存储在SRC / BIN /目录中。 每个二进制文件的设置可以在Cargo.Toml中的[[Bin]]表中定制。
您可以使用带有 --bin <bin-name>
的cargo run
命令运行单个二进制文件。 cargo install
安装可用于将可执行文件复制到common 位置。
# Example of customizing binaries in Cargo.toml.
[[bin]]
name = "cool-tool"
test = false
bench = false
[[bin]]
name = "frobnicator"
required-features = ["frobnicate"]
members相当于你自己可以在src中添加其它的二进制package,然后可以引用这些二进制package里的东西;
dependencies则是针对于library package
这是为了开发大型程序,分治crate用的。
一,根cargo.toml内容
[workspace]
members = [
“adder”,
“add-one”,
]
二,adder里的cargo.toml内容
[package]
name = “adder”
version = “0.1.0”
authors = [“test test@qq.com”]
edition = “2018”
[dependencies]
add-one = { path = “…/add-one” }
三,main.rs内容
use add_one;
fn main() {
let num = 10;
println!(“Hello, world! {} plus one is {}!”, num, add_one::add_one(num));
}
四,Lib.rs内容
pub fn add_one(x: i32) -> i32 {
x + 1
}
#[cfg(test)]
mod tests {
use super:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。