当前位置: 首页 > news >正文

认识rust的项目管理工具--cargo

cargo 提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段。不过,我们无需再手动安装,之前安装 Rust 的时候(用rustup或者vscode加插件的方式安装),就已经一并安装了。
用cargo new来创建新的项目,该项目的结构和配置文件都是由 cargo 生成,意味着我们的项目被 cargo 所管理
$ cargo new world_hello
$ cd world_hello

$ tree
.
├── .git
├── .gitignore
├── Cargo.toml
└── src
└── main.rs

Rust 项目主要分为两个类型:bin 和 lib,前者是一个可运行的项目(默认),后者是一个依赖库项目。

运行项目
有两种方式可以运行项目:
cargo run
cargo run 首先对项目进行编译,然后再运行,因此它实际上等同于运行了两个指令
手动编译和运行项目
cargo build
./target/debug/world_hello(debug 模式,在这种模式下,代码的编译速度会非常快,可是福兮祸所伏,运行速度就慢了. 原因是,在 debug 模式下,Rust 编译器不会做任何的优化,只为了尽快的编译完成,让你的开发流程更加顺畅。)
cargo run --release 提高运行速度
cargo build --release
$ ./target/release/world_hello
Hello, world!

当项目大了后,cargo run 和 cargo build 不可避免的会变慢,那么有没有更快的方式来验证代码的正确性呢?大杀器来了,接着!
cargo check 是我们在代码开发过程中最常用的命令,它的作用很简单:快速的检查一下代码能否编译通过。因此该命令速度会非常快,能节省大量的编译时间。

Cargo.toml 和 Cargo.lock 是 cargo 的核心文件,它的所有活动均基于此二者。
Cargo.toml 是 cargo 特有的项目数据描述文件。它存储了项目的所有元配置信息,如果 Rust 开发者希望 Rust 项目能够按照期望的方式进行构建、测试和运行,那么,必须按照合理的方式构建 Cargo.toml。

[package]
name = "world_hello"
version = "0.1.0"
edition = "2021"

Cargo.lock 文件是 cargo 工具根据同一项目的 toml 文件生成的项目依赖详细清单,因此我们一般不用修改它,只需要对着 Cargo.toml 文件撸就行了。

依赖管理
使用 cargo 工具的最大优势就在于,能够对该项目的各种依赖项进行方便、统一和灵活的管理。
在 Cargo.toml 中,主要通过各种依赖段落来描述该项目的各种依赖项:

基于 Rust 官方仓库 crates.io,通过版本说明来描述
基于项目源代码的 git 仓库地址,通过 URL 来描述
基于本地项目的绝对路径或者相对路径,通过类 Unix 模式的路径来描述
这三种形式具体写法如下:

[dependencies]
rand = "0.3"
hammer = { version = "0.5.0"}
color = { git = "https://github.com/bjz/color-rs" }
geometry = { path = "crates/geometry" }

crates.io它的默认镜像地址是在国外,这就导致了某些时候难免会遇到下载缓慢或者卡住的情况
增加新的镜像地址
首先是在 crates.io 之外添加新的注册服务
[registries]
ustc = { index = “https://mirrors.ustc.edu.cn/crates.io-index/” }
Cargo.toml 中使用以下方式引入:
[dependencies]
time = { registry = “ustc” }

第二种方式,则不需要修改 Cargo.toml 文件,因为它是直接使用新注册服务来替代默认的 crates.io。
在 $HOME/.cargo/config.toml 添加以下内容:
[source.crates-io]
replace-with = ‘ustc’

[source.ustc]
registry = “git://mirrors.ustc.edu.cn/crates.io-index”

相关文章:

认识rust的项目管理工具--cargo

cargo 提供了一系列的工具,从项目的建立、构建到测试、运行直至部署,为 Rust 项目的管理提供尽可能完整的手段。不过,我们无需再手动安装,之前安装 Rust 的时候(用rustup或者vscode加插件的方式安装)&#…...

面试常问的Linux之 I/O 复用

I/O 复用 一、I/O的概念 在Linux系统中,I/O(输入/输出)指的是计算机系统的数据交换过程,包括从外部设备读取数据(输入)和将数据发送到外部设备(输出)。I/O操作是Linux系统中非常重要…...

MySQL-binlog+dump备份还原

目录 🍁binlog日志恢复 🍂binlog介绍 🍂Binlog的用途 🍂开启binary log功能 🍂配置binlog 🍁mysqldump 🍂数据库的导出 🍂数据库的导入 🍁mysqldumpbinlog 🦐…...

互联网络-单级互联网络

1.立方体单级网络 1.定义 立方体单级网络(cube)的名称来源于下图所示的三维立方体结构,如010只能连接到000、011、110,不能直接连接到对角线上的001、100、101、111。 2.例题 1.编号为0、1、2、3、4,…,15的16个处理器,用单级互联网络互联,用Cube0互联函数时,与第10…...

上海亚商投顾:沪指四连阳重回3300点 中字头个股再发力

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪大小指数今日走势分化,沪指低开后震荡反弹,创业板指盘中跌超1%。中字头个股再度发力&#x…...

LeetCode:150. 逆波兰表达式求值—栈

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀算法专栏: 👉🏻123 一、🌱150. 逆波兰表达式求值 题目描述:给你一个字符串数组 token…...

C/C++每日一练(20230410) 二叉树专场(4)

目录 1. 二叉搜索树迭代器 🌟🌟🌟 2. 验证二叉搜索树 🌟🌟🌟 3. 不同的二叉搜索树 II 🌟🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专…...

策化整理1

概述: 本游戏是一款恐怖类解密游戏,以反应毒品的危害和反对家庭暴力为主题 在游戏中玩家扮演被困入梦境内的主人公,寻找逃出梦境的方法 本游戏故事大背景: 主人公的父亲是一名毒贩,在母亲发现父亲开始吸毒后选择与父亲…...

【服务通信自定义srv调用3----客户端的优化】

客户端的优化 服务通信自定义srv调用,客户端随意提交两个数,完成数的相加。也就是实现参数的动态提交: 1.格式:rosrun xxxx xxxx 12 34 2.节点执行时候,需要获取命令中的参数,并且组织进 request 代码中应…...

React跨域解决方案

一、跨域日志报错 我们由于项目需要经常会需要对不同域名、不同子域的网站接口发起请求,有时甚至是对于同一域名的不同端口发起请求,此时我们经常看到以下报错: Access to XMLHttpRequest at xxx from origin xxx has been blocked by COR…...

内存五区的概念,内存池技术的诞生。

首先提出一道经典的面试题来引出今天的主角: 进程的虚拟空间分布是什么样的,全局变量放在哪里? 在数据初始化之后,全局变量放在.data段 在数据未初始化时,全局变量放在.bss段 内存五区 进程虚拟内存主要分为五个部分…...

力扣:字符串中的第一个唯一字符(C++实现)

题目部分: 解题思路: 方案一: 首先认真审题的小伙伴们一定会发现就是题目给了提示只包含小写字母,也就是说我们的排查范围是小写的26个字母。为了怕有的友友们一时短路想不起来,我就其按照顺序列出来吧。 即&#x…...

攻防世界 favorite_number mfw、[BJDCTF2020]ZJCTF,不过如此

favorite_number 进入环境得到源码 <?php //php5.5.9 $stuff $_POST["stuff"]; $array [admin, user]; if($stuff $array && $stuff[0] ! admin) {$num $_POST["num"];if (preg_match("/^\d$/im",$num)){if (!preg_match("…...

SummingMergeTree

假设有这样⼀种查询需求&#xff1a;终端⽤户只需要查询数据的汇总结果&#xff0c;不关⼼明细数据&#xff0c;并且数据的汇总条件是预先明确的&#xff08;GROUP BY 条件明确&#xff0c;且不会随意改变&#xff09;。 对于这样的查询场景&#xff0c;在ClickHouse中如何解决…...

JUC并发编程基础篇第一章之进程/并发/异步的概念[理解基本概念]

1. 进程和线程的概念 进程: 系统正在运行的一个应用程序;程序一旦运行就是一个进程;进程是资源分配的最小单位 线程: 是进程的实际运行单位;一个人进程可以并发控制多个线程,每条线程并行执行不同的任务 区别: 进程基本上相互独立的;而线程存在于进程内&#xff0c;是进程…...

c语言—指针进阶

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…...

总结二分法

杨辉三角形&#xff08;快速查找唯一值,mid型) //二分法解//流程&#xff1a;最大列->起点行->2k--n之间究竟哪一行&#xff08;二分排列组合&#xff09;->找到行数就等差数列对应位置#include<stdio.h> #include<stdlib.h>//注意排列组合的规律是建立在…...

二叉搜索树和AVL树

目录 一、二叉搜索树 1.什么是二叉搜索树 2.二叉搜索树的实现 &#xff08;1&#xff09;构建类 &#xff08;2&#xff09;查找函数 &#xff08;3&#xff09;插入函数 &#xff08;4&#xff09;删除函数 &#xff08;5&#xff09;补齐默认成员函数 &#xff08;6…...

计算机体系结构量化研究方法【2】高速缓存Cache

目录1.计算机存储层次结构2.缓存相关概念3.缓存组织方式4.Cache回写机制5.Cache性能量化1.计算机存储层次结构 计算机存储层次结构可以看作是一个金字塔&#xff0c;越靠上层&#xff0c;容量越小&#xff0c;速度越快 L0&#xff1a;寄存器----CPU的寄存器保存着Cache取出的…...

初识设计模式 - 迭代器模式

简介 迭代器设计模式&#xff08;Iterator Design Pattern&#xff09;&#xff0c;也叫作游标设计模式&#xff08;Cursor Design Pattern&#xff09;。 迭代器模式将集合对象的遍历操作从集合类中拆分出来&#xff0c;放到迭代器类中&#xff0c;让两者的职责更加单一。 …...

3步轻松延长Navicat使用周期:Mac用户实用指南

3步轻松延长Navicat使用周期&#xff1a;Mac用户实用指南 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 还在为Navicat试用期到期烦恼吗&#xff1f;作为数据库管理的得力工具…...

3个秘诀让城通网盘下载提速10倍:ctfileGet工具全解析

3个秘诀让城通网盘下载提速10倍&#xff1a;ctfileGet工具全解析 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet ctfileGet是一款专注于获取城通网盘直连地址的开源工具&#xff0c;通过本地解析技术帮…...

ICLR 2026 | 告别Top-K检索!RF-Mem在嵌入空间逐步重构证据链,实现长记忆渐进式唤醒

今天分享一篇来自大连理工大学、香港城市大学、华为和中国科学技术大学的最新工作 RF-Mem&#xff0c;发表于ICLR 2026。这篇工作关注个性化大模型中的一个关键问题&#xff1a;当用户历史越来越长时&#xff0c;模型到底该怎样从海量记忆里&#xff0c;准确找回“此时此刻最相…...

保姆级教程:YOLOv8轻量化模型从训练到安卓部署全流程(附避坑指南)

保姆级教程&#xff1a;YOLOv8轻量化模型从训练到安卓部署全流程&#xff08;附避坑指南&#xff09; 在移动端实现实时目标检测一直是计算机视觉领域的热门方向。YOLOv8作为当前最先进的检测模型之一&#xff0c;其轻量化版本在安卓设备上的部署需求日益增长。本文将手把手带…...

【JAVA基础面经】深拷贝与浅拷贝

文章目录基本概念浅拷贝深拷贝重写 clone() 方法实现深拷贝使用序列化实现深拷贝使用复制构造函数或工厂方法基本概念 浅拷贝&#xff1a;创建一个新对象&#xff0c;然后将原对象的非静态字段&#xff08;基本类型和引用类型&#xff09;直接复制到新对象中。对于引用类型字段…...

幻兽帕鲁启动提示 msvcp140.dll 丢失怎么办?2026最新解决办

心问题&#xff1a; 在 Steam 或其他平台启动《幻兽帕鲁》&#xff08;Palworld&#xff09;时&#xff0c;系统弹出“由于找不到 msvcp140.dll&#xff0c;无法继续执行代码”的错误提示&#xff0c;导致游戏无法进入。 简短回答&#xff1a; 幻兽帕鲁 msvcp140.dll 报错的主…...

8-Bit美学不妥协性能|像素剧本圣殿UI渲染与LLM推理资源隔离方案

8-Bit美学不妥协性能&#xff5c;像素剧本圣殿UI渲染与LLM推理资源隔离方案 1. 项目概述 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款专为剧本创作者设计的AI辅助工具&#xff0c;基于Qwen2.5-14B-Instruct大模型深度微调开发。它将高性能AI推理能力与独…...

MDXEditor指令系统详解:如何扩展Markdown语法

MDXEditor指令系统详解&#xff1a;如何扩展Markdown语法 【免费下载链接】editor A rich text editor React component for markdown 项目地址: https://gitcode.com/gh_mirrors/editor/editor MDXEditor是一个功能丰富的React组件&#xff0c;专为Markdown编辑设计&am…...

PN5180 ISO15693协议栈实现与嵌入式NFC开发指南

1. PN5180库深度解析&#xff1a;面向嵌入式工程师的NFC ISO15693协议栈实现指南NXP PN5180是业界领先的多协议NFC控制器&#xff0c;支持ISO/IEC 14443 A/B、ISO/IEC 15693、Felica及NFC Forum Type 1–5标签。其核心优势在于高集成度射频前端、可编程调制解调器及灵活的主机接…...

特朗普政府发布《国家人工智能立法框架》,多维度布局AI领域

【《国家人工智能立法框架》六大核心目标锚定AI发展方向】特朗普政府发布的《国家人工智能立法框架》&#xff0c;意在通过统一国家政策确保美国在AI领域的全球领先地位。该框架包含六大核心目标&#xff0c;分别是保护儿童与赋能家长、维护与强化美国社区、尊重知识产权与支持…...