初识Cargo:Rust的强大构建工具与包管理器

初识Cargo:Rust的强大构建工具与包管理器

如果你刚刚开始学习Rust,一定会遇到一个名字:Cargo。Cargo是Rust的官方构建工具和包管理器,它让Rust项目的创建、编译、测试和依赖管理变得非常简单。本文将带你快速了解Cargo的基本用法,帮助你轻松上手Rust开发!


1. 什么是Cargo?

Cargo是Rust的构建工具包管理器,类似于其他语言中的工具(如Node.js的npm、Python的pip)。它的主要功能包括:

  • 创建和管理项目:快速初始化新项目,生成标准目录结构。
  • 编译代码:自动编译项目并生成可执行文件。
  • 管理依赖:轻松添加、更新和删除第三方库。
  • 运行测试:一键运行项目中的单元测试和集成测试。
  • 生成文档:自动生成项目的API文档。

Cargo是Rust开发的核心工具,几乎每个Rust项目都会用到它。


2. 安装Cargo

当你安装Rust时,Cargo会自动安装。可以通过以下命令检查Cargo是否安装成功:

cargo --version

如果看到类似cargo 1.xx.x (xxxxxxx yyyy-mm-dd)的输出,说明Cargo已经安装成功。


3. 使用Cargo创建项目

使用Cargo创建新项目非常简单。打开终端,运行以下命令:

cargo new hello_cargo

这会在当前目录下创建一个名为hello_cargo的新项目。进入项目目录:

cd hello_cargo

你会看到以下文件和目录:

  • Cargo.toml:项目的配置文件,包含元信息和依赖。
  • src/main.rs:主程序文件,里面已经包含了一个“Hello, World!”示例。
Cargo.toml文件

Cargo.toml是项目的配置文件,内容如下:

[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"[dependencies]
  • [package]部分定义了项目的名称、版本和Rust版本。
  • [dependencies]部分用于声明项目的依赖。
src/main.rs文件

src/main.rs是项目的主程序文件,内容如下:

fn main() {println!("Hello, world!");
}

这是一个简单的“Hello, World!”程序。


4. 编译和运行项目

在项目目录中,运行以下命令编译并运行项目:

cargo run

Cargo会自动编译代码并运行生成的可执行文件。你会看到输出:

Hello, world!

如果你想只编译代码而不运行,可以使用:

cargo build

这会在target/debug目录下生成可执行文件。


5. 添加依赖

Cargo的一个强大功能是依赖管理。假设你想在项目中使用一个第三方库(如rand生成随机数),只需在Cargo.toml[dependencies]部分添加库的名称和版本:

[dependencies]
rand = "0.8"

然后运行以下命令下载并编译依赖:

cargo build

Cargo会自动下载rand库并将其添加到项目中。


6. 其他常用命令

Cargo提供了许多有用的命令,以下是一些常用的命令:

  • 检查代码:检查代码是否可以编译,但不生成可执行文件。

    cargo check
    
  • 运行测试:运行项目中的所有测试。

    cargo test
    
  • 生成文档:生成项目的API文档,并在浏览器中打开。

    cargo doc --open
    
  • 清理项目:删除编译生成的文件。

    cargo clean
    

7. 为什么使用Cargo?

  • 标准化:Cargo为Rust项目提供了标准化的结构和工具,让开发更加规范。
  • 自动化:Cargo自动处理依赖、编译和测试,减少手动操作。
  • 社区支持:Cargo与Rust生态系统紧密集成,几乎所有Rust库都支持Cargo。

8. 总结

Cargo是Rust开发中不可或缺的工具,它让项目的创建、编译、测试和依赖管理变得非常简单。通过本文,你已经学会了:

  1. 如何使用Cargo创建新项目。
  2. 如何编译和运行项目。
  3. 如何添加依赖。
  4. 如何使用Cargo的其他常用命令。

接下来,你可以继续探索Cargo的更多功能,比如编写测试、发布项目等。希望这篇文章能帮助你快速上手Cargo,开启愉快的Rust开发之旅!

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言。Happy Coding!🚀


参考资源

  • Rust官方Cargo指南
  • Cargo官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/68822.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【4Day创客实践入门教程】Day2 探秘微控制器——单片机与MicroPython初步

Day2 探秘微控制器——单片机与MicroPython初步 目录 Day2 探秘微控制器——单片机与MicroPython初步MicroPython语言基础开始基础语法注释与输出变量模块与函数 单片机基础后记 Day0 创想启程——课程与项目预览Day1 工具箱构建——开发环境的构建Day2 探秘微控制器——单片机…

WSL2中安装的ubuntu开启与关闭探讨

1. PC开机后,查询wsl状态 在cmd或者powersell中输入 wsl -l -vNAME STATE VERSION * Ubuntu Stopped 22. 从windows访问WSL2 wsl -l -vNAME STATE VERSION * Ubuntu Stopped 23. 在ubuntu中打开一个工作区后…

Hive:窗口函数(1)

窗口函数 窗口函数OVER()用于定义一个窗口,该窗口指定了函数应用的数据范围 对窗口数据进行分区 partition by 必须和over () 一起使用, distribute by经常和sort by 一起使用,可以不和over() 一起使用.DISTRIBUTE BY决定了数据如何分布到不同的Reducer上&#xf…

【Quest开发】手柄单手抓握和双手抓握物体切换

V72更新以后非常智能哈,配置物体简单多了。 选择需要被抓取的物体鼠标右键单击它,点Add Grab Interaction,按它要求的配置就行 配好以后长这样 把这个选项取消勾选就能切换成双手抓一个物体了,不需要像以前一样用各种grabTransfo…

LeGO LOAM坐标系问题的自我思考

LeGO LOAM坐标系问题的自我思考 总体思考流程IMU坐标系LeGO LOAM代码分析代码 对于IMU输出测量值的integration积分过程欧拉角的旋转矩阵VeloToStartIMU()函数TransformToStartIMU(PointType *p) 总体思考流程 第一页 第二页 第三页 IMU坐标系 在LeGO LOAM中IMU坐标系的形式…

PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践

title: PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践 date: 2025/1/28 updated: 2025/1/28 author: cmdragon excerpt: 在数据库管理中,备份与恢复是确保数据安全和业务连续性的关键措施。PostgreSQL 提供了一系列工具,以便于数据库管理员对数据进行…

接口 V2 完善:分布式环境下的 WebSocket 实现与 Token 校验

🎯 本文档详细介绍了如何使用WebSocket协议优化客户端与服务端之间的通信,特别是在处理异步订单创建通知的场景中。通过引入WebSocket代替传统的HTTP请求-响应模式,实现了服务器主动向客户端推送数据的功能,极大地提高了实时性和效…

HarmonyOS NEXT:保存应用数据

用户首选项使用 用户首选项的特点 数据体积小、访问频率高、有加载速度要求的数据如用户偏好设置、用户字体大小、应用的配置参数。 用户搜选项(Preferences)提供了轻量级配置数据的持久化能力,支持订阅数据变化的通知能力。不支持分布式同…

win10部署本地deepseek-r1,chatbox,deepseek联网(谷歌网页插件Page Assist)

win10部署本地deepseek-r1,chatbox,deepseek联网(谷歌网页插件Page Assist) 前言一、本地部署DeepSeek-r1step1 安装ollamastep2 下载deepseek-r1step2.1 找到模型deepseek-r1step2.2 cmd里粘贴 后按回车,进行下载 ste…

5.3.2 软件设计原则

文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…

4-图像梯度计算

文章目录 4.图像梯度计算(1)Sobel算子(2)梯度计算方法(3)Scharr与Laplacian算子4.图像梯度计算 (1)Sobel算子 图像梯度-Sobel算子 Sobel算子是一种经典的图像边缘检测算子,广泛应用于图像处理和计算机视觉领域。以下是关于Sobel算子的详细介绍: 基本原理 Sobel算子…

图漾相机-ROS2-SDK-Ubuntu版本编译(新版本)

文章目录 前言1.Camport ROS2 SDK 介绍1.1 Camport ROS2 SDK源文件介绍1.2 Camport ROS2 SDK工作流程1.2.1 包含头文件1.2.2 2 初始化 ROS 2 节点1.2.3 创建节点对象1.2.4 创建发布者对象并实现发布逻辑1.2.5 启动 ROS 2 1.3 ROS2 SDK环境配置与编译1.3.1 Ubuntu 20.04 下ROS2 …

海外问卷调查渠道查:企业经营的利器

一、海外问卷调查的基本概念 市场:市场主要由需求者和供给者组成的一种经济关系,主要是商品和服务的交换的一种方式和手段,市场类型按不同标准来划分。按地域划分,则分为国内市场和国际市场,按照产品类型划分&#xf…

向上调整算法(详解)c++

算法流程: 与⽗结点的权值作⽐较,如果⽐它⼤,就与⽗亲交换; 交换完之后,重复 1 操作,直到⽐⽗亲⼩,或者换到根节点的位置 这里为什么插入85完后合法? 我们插入一个85,…

LeetCode题练习与总结:根据二叉树创建字符串--606

一、题目描述 给你二叉树的根节点 root ,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。 空节点使用一对空括号对 "()" 表示,转化后需要省略所有不影响字符串与原始二叉树…

人工智能入门课【手写自注意力机制】

原理 自注意力(Self-Attention)是一种强大的机制,广泛应用于自然语言处理、计算机视觉等领域,尤其是在Transformer架构中发挥了关键作用。它的核心思想是让模型能够动态地关注输入序列中不同位置之间的关系,从而更好地…

gentoo 中更改$PS1

现象:gentoo linux Xfce桌面,Terminal 终端,当进入很深的目录时,终端提示符会很长,不方便。如下图所示: 故需要修改$PS1 gentoo 默认的 PS1 在 /etc/bash/bashrc .d/10-gentoo-color.bash中定义&a…

安全防护前置

就业概述 网络安全工程师/安全运维工程师/安全工程师 安全架构师/安全专员/研究院(数学要好) 厂商工程师(售前/售后) 系统集成工程师(所有计算机知识都要会一点) 学习目标 前言 网络安全事件 蠕虫病毒--&…

【自然语言处理(NLP)】深度学习架构:Transformer 原理及代码实现

文章目录 介绍Transformer核心组件架构图编码器(Encoder)解码器(Decoder) 优点应用代码实现导包基于位置的前馈网络残差连接后进行层规范化编码器 Block编码器解码器 Block解码器训练预测 个人主页:道友老李 欢迎加入社…

mysqldump+-binlog增量备份

注意:二进制文件删除必须使用help purge 不可用rm -f 会崩 一、概念 增量备份:仅备份上次备份以后变化的数据 差异备份:仅备份上次完全备份以后变化的数据 完全备份:顾名思义,将数据完全备份 其中,…