前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过 Cargo 管理 Rust 项目

通过 Cargo 管理 Rust 项目

作者头像
用户3147702
发布2022-06-27 17:08:46
7290
发布2022-06-27 17:08:46
举报

1. 引言

经过前面几篇文章的介绍,我们已经清楚了 rust 的基础语法:

Rust 基础语法(一) -- 变量、运算与注释

Rust 基础语法(二) -- 函数与循环

随着我们开发的程序越来越复杂,项目中的合作越来越频繁时,就必须要考虑如何来组织我们的项目。

rust 官方提供了 Cargo 工具来管理项目,让我们的项目管理变得简单,本文我们就来介绍一下。

2. 使用 cargo 创建项目

2.1 创建项目

在 rust 工具包中,已经默认安装了 cargo,你可以通过下面命令来检验 cargo 是否已经正常安装,并且查看其版本:

代码语言:javascript
复制
 $ cargo --version

使用 cargo 创建项目很简单,只需要以项目名为参数执行命令:

代码语言:javascript
复制
 $ cargo new hello_cargo

这样就创建出了名为 hello_cargo 的项目。

进入 hello_cargo 目录执行 tree 命令可以看到:

代码语言:javascript
复制
 .
 ├── Cargo.toml
 └── src
     └── main.rs
 
 1 directory, 2 files

2.2 Cargo.toml

从新创建的 hello_cargo 项目中的内容来看,除了我们熟悉的写有 hello world 程序的 main.rs 外,其余就只有一个 Cargo.toml 文件了。

Cargo.toml 文件是一个 TOML 标准格式文件,它初始的内容如下:

代码语言:javascript
复制
 [package]
 name = "hello_cargo"
 version = "0.1.0"
 edition = "2021"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
 
 [dependencies]

我们需要依赖的第三方包以及其版本就可以定义在这个配置文件中,在 build 的时候自动安装这些依赖。

在 rust 中,包是对术语 crate 的翻译,它是 Rust 最小的编译单元,package 是若干 crate 的集合,在中文中,crate 和 package 都被称为“包”,有时我们需要去辨别包与包的不同,不过大部分情况并不需要。

2.3 代码版本控制

Cargo 默认使用 git 作为版本控制工具,因此上述项目目录中已经有了 .gitignore 文件,当然,在创建项目时,也可以通过 --vcs 参数来选择不使用任何版本控制工具,或者通过 --help 查看支持的其他版本控制工具参数。

3. 用 Cargo 构建和运行项目

在项目目录下,执行 cargo build 命令就可以完成任务的构建:

代码语言:javascript
复制
 $ cargo build
    Compiling hello_cargo v0.1.0 (/Users/techlog/Workspace/code/rust/hello_cargo)
     Finished dev [unoptimized + debuginfo] target(s) in 2.01s

通过 tree 命令,可以看到构建完成后产生的新文件:

代码语言:javascript
复制
 .
 ├── Cargo.lock
 ├── Cargo.toml
 ├── src
 │   └── main.rs
 └── target
     ├── CACHEDIR.TAG
     └── debug
         ├── build
         ├── deps
         │   ├── hello_cargo-961ecc8ba604608e
         │   ├── hello_cargo-961ecc8ba604608e.1qau2g7rc04b8n42.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.1wb2m83aihx8d8k4.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.2cxjpttsw6fohl8z.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.2ff6ogfujp34yrx2.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.48wqmd6nlep2ungd.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.54gbqr1pabl9mrem.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.5edo85wf9vpk0c0.rcgu.o
         │   ├── hello_cargo-961ecc8ba604608e.cfznvsvgjwaw8ji.rcgu.o
         │   └── hello_cargo-961ecc8ba604608e.d
         ├── examples
         ├── hello_cargo
         ├── hello_cargo.d
         └── incremental
             └── hello_cargo-cj2sb71suuq
                 ├── s-gakbxnyar6-xajrwz-fg4gunogpa2i
                 │   ├── 1qau2g7rc04b8n42.o
                 │   ├── 1wb2m83aihx8d8k4.o
                 │   ├── 2cxjpttsw6fohl8z.o
                 │   ├── 2ff6ogfujp34yrx2.o
                 │   ├── 48wqmd6nlep2ungd.o
                 │   ├── 54gbqr1pabl9mrem.o
                 │   ├── 5edo85wf9vpk0c0.o
                 │   ├── cfznvsvgjwaw8ji.o
                 │   ├── dep-graph.bin
                 │   ├── query-cache.bin
                 │   └── work-products.bin
                 └── s-gakbxnyar6-xajrwz.lock

我们关心的实际上是 target/debug/hello_cargo 这个可执行文件,可以直接执行它:

代码语言:javascript
复制
 $ ./target/debug/hello_cargo
 Hello, world!

除了这些中间文件,以及最后的可执行文件外,在项目目录下还出现了 Cargo.lock 文件,它记录了构建当前项目所依赖的库和版本号。

如果你要编译正式发布版本,那么在构建的时候增加 --release 参数即可。

4. 检测 rust 语法

当你做了一些修改,你可能并不想花很长时间来编译,而仅仅是想要知道是否存在编译错误,此时,只需要执行 cargo check 就可以快速定位编译错误:

代码语言:javascript
复制
 $ cargo check
    Compiling hello_cargo v0.1.0 (file:///projects/hello_cargo)
     Finished dev [unoptimized + debuginfo] target(s) in
    0.32 secs

5. 运行项目

执行 cargo run 命令可以运行项目,如果之前没有执行过 cargo build 或者在 build 后又有了新的修改,cargo run 命令会自动进行 build:

代码语言:javascript
复制
 $ cargo run
     Finished dev [unoptimized + debuginfo] target(s) in 0.06s
      Running `target/debug/hello_cargo`
 Hello, world!
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小脑斧科技博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 引言
  • 2. 使用 cargo 创建项目
    • 2.1 创建项目
      • 2.2 Cargo.toml
        • 2.3 代码版本控制
        • 3. 用 Cargo 构建和运行项目
        • 4. 检测 rust 语法
        • 5. 运行项目
        相关产品与服务
        项目管理
        CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档