Rust:如何使用Cargo

930 阅读2分钟

1. 什么是cargo

Cargo是Rust的官方包管理器和构建工具。它负责下载依赖项,编译代码并构建可执行文件。

2. cargo的主要功能

cargo的主要功能包括:

  • 构建和运行项目
  • 运行测试
  • 管理项目依赖关系
  • 发布包到crates.io

3. 如何安装cargo

如果您已经安装了Rust,那么您应该已经安装了cargo。您可以通过在命令行中运行cargo --version来检查是否已经安装了cargo。

如果您还没有安装Rust,您可以通过访问www.rust-lang.org/tools/insta…来安装Rust和cargo。

4.cargo如何构建和运行项目

要使用Cargo创建新项目,请在任何操作系统上运行以下命令:

$ cargo new hello_cargo
$ cd hello_cargo 

第一个命令创建了一个名为hello_cargo的新目录和项目。

要运行项目示例,可以使用以下命令:

cargo run 
name_of_example
 

其中name_of_example是基本文件名(不带.rs)。要在发布模式下运行它:

cargo run --release name_of_example
 

要将参数传递给示例:

cargo run name_of_example -- arguments go here
 

cargo run会自动构建(或重新构建)程序,如果它已过期。

5.cargo如何运行测试

使用cargo运行测试,您需要在项目中编写测试代码。在Rust中,测试通常位于与源代码相同的文件中,并使用#[test]属性进行标记。

例如,下面是一个简单的测试用例,它测试了add函数的功能:

fn add(a: i32, b: i32) -> i32 {
    a + b
}

#[test]
fn test_add() {
    assert_eq!(add(1, 2), 3);
}
复制代码

要运行测试,您可以在项目根目录下运行cargo test命令。这将编译并运行项目中的所有测试。

例如,对于上面的示例,运行cargo test命令将输出以下内容:

$ cargo test
   Compiling myproject v0.1.0 (/myproject)
    Finished test [unoptimized + debuginfo] target(s) in 0.61s
     Running target/debug/deps/myproject-abc123

running 1 test
test test_add ... ok

test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

   Doc-tests myproject

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
 

6.如何管理项目依赖关系

可以在Cargo.toml文件中指定项目的依赖项。Cargo默认配置为从crates.io查找依赖项。在这种情况下,只需要名称和版本字符串。例如:

[dependencies]
time = "0.1.12"
 

字符串"0.1.12"是一个版本要求。尽管它看起来像time crate的特定版本,但它实际上指定了一系列版本,并允许SemVer兼容更新。 您还可以使用特殊运算符进一步调整选择兼容版本的逻辑,尽管大多数情况下不需要这样做。

7.发布包到crates.io

要使用cargo将包发布到crates.io,您需要遵循以下步骤:

  1. Cargo.toml文件中指定包的名称、版本和作者等信息。例如:
[package]
name = "mylibrary"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"
 
  1. 确保您的代码已经通过了测试,并且文档完整。
  2. 在命令行中运行cargo login命令,并根据提示输入您的crates.io API token。
  3. 在命令行中运行cargo publish命令来发布包。

例如,对于上面的示例,运行cargo publish命令将输出以下内容:

$ cargo publish
    Updating crates.io index
   Packaging mylibrary v0.1.0 (/mylibrary)
   Verifying mylibrary v0.1.0 (/mylibrary)
   Compiling mylibrary v0.1.0 (/mylibrary/target/package/mylibrary-0.1.0)
    Finished dev [unoptimized + debuginfo] target(s) in 0.61s
   Uploading mylibrary v0.1.0 (/mylibrary)
 

要运行项目,您可以在项目根目录下运行cargo run命令。这将构建并运行项目。

8. cargo的扩展功能

除了上述基本功能外,cargo还提供了许多扩展功能,如:

  • 支持自定义命令
  • 支持工作空间
  • 支持配置文件覆盖

cargo是Rust开发中不可或缺的工具。它提供了强大而灵活的功能,能够帮助开发人员更快地构建和管理Rust项目。from刘金,转载请注明原文链接。感谢!