【一起学Rust】Rust包管理工具Cargo初步了解

简介: 【一起学Rust】Rust包管理工具Cargo初步了解



前言

上一篇文章我们学习了Rust的Hello World,并对其进行了详细分析,相信你已经学习到了,本节我们将使用Cargo创建一个Hello World,并对其进行详细分析。

我们上次写的Hello World是最简单的程序,是没有依赖的。想想,如果你在开发大型的项目时,一定会引用到其他的库,或者管理一些文件,进行构建,这时候编译就成了个复杂的问题。Rust官方为我们提供了Cargo来管理这些项目,它可以做到上面提到的一切,使用Cargo进行管理将会使你开发变得更容易,我们以后的开发用到的就全是Cargo了。

Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。

Rustacean 指的就是电脑面前学习的大佬啦。


一、使用 Cargo 创建项目

首先需要检查你的电脑是否安装Cargo,当然,如果你正常安装的话那就必然已经安装上了。

cargo --version

如下返回,就代表安装没有问题,否则建议你重新安装Rust。

1. 新建项目

以下命令用来新建一个项目

cargo new hello_cargo

其中hello_cargo是新建项目的名字,运行后如下图就表示创建成功。

接下来进入刚才创建的项目目录,可以看到目录结构如下,

│  .gitignore
│  Cargo.toml
└─src
        main.rs
  • .gitignore是个git忽略文件列表,在上传到git时,并不是所有文件都要上传到github的。同时这也提醒我们,cargo为我们创建了一个github仓库。
  • Cargo.toml是个项目的配置文件,其中包括项目名,依赖等内容,后面详细介绍。
  • src/main.rs是项目创建好自带的Hello World文件。

2. 指定版本管理系统

cargo为我们默认创建了git仓库,因为git是一个常用的管理系统,除此以外,cargo还可以指定版本管理系统,使用 --vcs 参数指定或者切换版本管理系统,如果文件夹已经有了仓库了,那么默认就不会创建仓库了。

cargo new --vcs=git

--vcs的可选项为

可选项
git, hg, pijul, fossil, none

3. Cargo.toml配置文件

Cargo.toml文件使用的是TOML配置格式,在TOML格式中

  • [section] 称为一个片段标题
  • name = value 的形式配置标题下面的配置项

项目的配置文件,可以用文本编辑器打开,其中内容如下

[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"
[dependencies]
  1. [package]是管理当前项目包的信息的
    name 表明了项目名字是hello_cargo
    version表明了项目版本号是0.1.0
    edition 表明了项目使用的Rust版本号
  2. [dependencies]是管理当前项目包的依赖信息的。在 Rust 中,代码包被称为 crates。这个项目并不需要其他的 crate,不过在后面的项目会用到依赖,那时会用得上这个片段。

二、构建并运行 Cargo 项目

使用cargo运行程序和我们手动运行程序是不一样的,手动运行程序需要先编译,然后再运行,在cargo里面我们一步就可完成这个操作,cargo自动为我们管理了这个过程。

1.构建项目

构建项目使用如下命令,

cargo build

运行后,编译成功如下图,

此时cargo就为我们编译好了项目,找到hello_cargo\target\debug目录就可以看到我们编译好的可执行文件,这个和我们在命令行执行文件是一样的

可执行程序运行也是和之前一样的

Cargo.lock文件

如果项目编译正常,会生成一个Cargo.lock文件,这个文件记录项目依赖的实际版本。你自己永远也不需要碰这个文件,让 Cargo 处理它就行了。

2.运行项目

使用cargo来运行项目,使用以下命令

cargo run

运行效果与我们手动运行是一样的,run会自动执行编译和运行的步骤,我们上面已经编译了,因此这里运行时就不需要再次编译了,cargo就变得很智能。

再次修改后运行就会有一个编译的过程

3.检查代码

Cargo还提供了一个代码检查的工具,该命令快速检查代码确保其可以编译,但并不产生可执行文件:

cargo check

当我们执行后,并没有报错,说明代码没有问题。

三、发布 Cargo 项目

发布项目时,我们使用以下命令来优化编译项目,以让 Rust 代码运行的更快,不过启用这些优化也需要消耗更长的编译时间。

cargo build --release
  1. Debug是为了开发,你需要经常快速重新构建;
  2. Release是为用户构建最终程序,它们不会经常重新构建,并且希望程序运行得越快越好。

最后你可以在target/release下找到最终的可执行文件。


总结

我们回顾下已学习的 Cargo 内容:

  1. 可以使用 cargo new 创建项目。
  2. 可以使用 cargo build 构建项目。
  3. 可以使用 cargo run 一步构建并运行项目。
  4. 可以使用 cargo check 在不生成二进制文件的情况下构建项目来检查错误。
  5. 有别于将构建结果放在与源码相同的目录,Cargo 会将其放到 target/debug 目录。
目录
相关文章
|
1月前
|
Rust 数据可视化 安全
Rust性能分析工具概览:perf、flamegraph 与其他
Rust作为一种高性能、内存安全的编程语言,在构建大型系统和微服务时备受青睐。然而,优化Rust程序的性能需要有效的工具。本文将对Rust中常用的性能分析工具进行介绍,包括perf、flamegraph等,并探讨它们如何帮助开发者定位和解决性能瓶颈。
|
1月前
|
Rust 区块链
学Rust不学Cargo,等于没学Rust:features特性详解
在 Rust 中,Cargo 的 "features" 是一种条件编译机制,允许在编译 crate 时编译部分代码。这样可以在一个 crate 中提供多个功能,并根据需要选择性地启用或禁用这些功能。
|
1月前
|
Rust Linux iOS开发
【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
【一起学Rust | 开源项目】效率提升工具espanso——在日常输入中使用代码提示
63 0
|
1月前
|
Rust 监控 安全
【专栏】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式
【4月更文挑战第28天】`ripgrep`(rg)是Linux下快速、内存高效的文本搜索工具,用Rust编写,支持PCRE2正则表达式。相比`grep`,它在处理大文件和复杂模式时更具优势。安装`rg`可通过软件包管理器,如在Debian系系统中使用`sudo apt install ripgrep`。基本用法包括简单搜索、递归搜索、忽略大小写、显示行号等。高级功能包括固定字符串搜索、多文件匹配、并行搜索、排除选项和区域搜索。适用于日志分析、代码审查等场景,是提升工作效率的利器。
|
1月前
|
Rust 监控 网络协议
运用Rust编写高效的远程监控多台电脑屏幕工具
使用Rust编程语言开发远程监控多台电脑屏幕的工具,通过安装客户端实时传输屏幕截图至监控端。示例代码展示如何利用Rust的网络编程和图像处理库捕获、发送及接收屏幕截图。监控端接收到数据后可进行保存或上传等处理,实现高效可靠的远程监控解决方案。
141 2
|
1月前
|
Rust 开发者
Rust中的模块与包管理:构建高效、可扩展的代码库
本文详细阐述了Rust编程语言中模块与包管理的概念、特点和使用方法。通过深入了解模块与包的概念、组织方式、导入导出机制以及Rust的Cargo工具,我们将学会如何构建高效、可扩展的代码库,提高代码的可读性、可维护性和可重用性。
|
1月前
|
Rust Java 编译器
学Rust不学Cargo,等于没学Rust:workspace详解
Rust 中的`Workspace`是一种组织多个 Rust crate(项目或库)的结构。使得它们可以协同工作、共享依赖关系,以及更方便地进行管理和构建。 如果你是Java开发者,workspace这个概念类似Java中的`maven`父工程。 子工程可以共享父工程中的很多配置项,如依赖,版本等配置。子工程可以`选择性的继承`父工程的配置。
|
1月前
|
Rust 测试技术 开发工具
Rust中的Cargo:依赖管理与项目构建
本文将深入探讨Rust编程语言中的Cargo工具。Cargo不仅用于构建Rust项目,还是管理项目依赖的关键组件。我们将了解如何使用Cargo创建新项目、添加依赖项、以及如何通过Cargo进行构建和测试,从而确保项目的顺利开发与部署。
|
1月前
|
JSON Rust 编译器
Rust 笔记:开发环境搭建与 rust 工具介绍
Rust 笔记:开发环境搭建与 rust 工具介绍
181 0
|
6月前
|
Rust
使用cargo创建rust程序并运行
使用cargo创建rust程序并运行
40 0