Cargo Rust 的包管理器
Cargo->Rust 的包管理器
- Cargi简介
- Cargo 的主要功能
- 1. 创建项目
- 2. 管理依赖
- 3. 构建项目
- 4. 运行项目
- 5. 测试代码
- 6. 检查代码
- 7. 生成文档
- 8. 发布和分享包
- Cargo 的核心文件
- 1. `Cargo.toml`
- 2. `Cargo.lock`
- **Cargo 的生态系统**
- 常用命令总结
- Hello, Cargo! 示例
Cargi简介
Cargo 是 Rust 的包管理器和构建工具,类似于其他语言中的工具,如 JavaScript 的 npm、Python 的 pip 或 Java的 Maven 等。它是 Rust 生态系统的重要组成部分,默认随 Rust 编译器一起安装。Cargo 简化了依赖管理、项目构建、测试、文档生成等开发工作。
Cargo 的主要功能
查看是否安装了Cargo,一般Cargo是和Rust一起安装的。在命令窗口输入
cargo --version
能正常输出版本号,表示已经安装成功。
1. 创建项目
Cargo 可以快速生成一个新项目的基本结构,包括必要的配置文件和目录:
cargo new project_name
这会创建一个包含以下内容的项目:
project_name/
├── Cargo.toml # 项目配置文件
├── src/└── main.rs # 主程序文件
2. 管理依赖
Cargo 使用 Cargo.toml
文件来管理项目依赖,类似于 Python 的 requirements.txt
或 Node.js 的 package.json
。
[package] -- 是一个区域标题,表示下方内容是配置package的
name = "hello_cargo" -- 项目名称
version = "0.1.0" -- 项目版本
authors= ["Venus"] -- 项目作者
edition = "2021" -- 使用的Rust的版本[dependencies] -- 会列出项目使用的依赖项,在Rust中,代码的包叫做crate
在 Cargo.toml
中添加依赖后,运行以下命令会下载并编译依赖:
cargo build
依赖示例 (Cargo.toml
):
[dependencies]
serde = "1.0" # 添加 serde 库
tokio = { version = "1.0", features = ["full"] } # 添加 tokio 库并启用特性
3. 构建项目
Cargo 自动管理项目的构建过程,包括编译源代码和依赖库。运行以下命令即可构建项目:
cargo build
它会在 target/debug/
目录下生成调试版本的可执行文件。可以通过 --release
构建优化后的生产版本:
cargo build --release
使用cargo build
之后
- 创建了可执行文件,在
target\debug\hello_cargo.exe
- 第一次运行
cargo build
会在顶层目录生成cargo.lock
文件,该文件负责追踪项目依赖的精确版本,不要手动修改该文件。
4. 运行项目
无需手动调用编译器,直接使用以下命令运行项目:
cargo run
该命令cargo run
,编译代码 + 执行结果。
- 如果已经编译成功了,并且源代码没有进行修改,则会直接运行二进制文件。
5. 测试代码
Rust 提供内置的单元测试支持。使用 Cargo 可以轻松运行测试:
cargo test
6. 检查代码
Cargo支持检查代码。
cargo check
cargo check
检查代码,确保能通过编译,但是不产生任何可执行文件;- 和
cargo build
区别是,比cargo build
要快很多。 - 编写代码的时候,可反复使用进行调试。
7. 生成文档
Rust 支持自动文档生成工具 rustdoc
,并集成到 Cargo 中。运行以下命令可以生成 HTML 文档:
cargo doc --open
8. 发布和分享包
Cargo 支持将项目发布到 Rust 的官方包管理平台 Crates.io。发布时,执行以下命令:
cargo publish
Cargo 的核心文件
1. Cargo.toml
这是项目的配置文件,使用 TOML 格式,用于定义项目的元信息、依赖、构建配置等。
示例:
[package]
name = "my_project"
version = "0.1.0"
authors = ["Your Name <email@example.com>"]
edition = "2021"[dependencies]
serde = "1.0" # 添加依赖库
2. Cargo.lock
此文件记录了所有依赖库的精确版本,确保项目的构建环境一致。通常无需手动修改。
Cargo 的生态系统
- Crates.io:Rust 的开源包托管平台。开发者可以搜索、下载、发布 Rust 包。
- Cargo Workspaces:支持管理多个相关的子项目,适合大型项目。
常用命令总结
命令 | 功能 |
---|---|
cargo new <name> | 创建新项目 |
cargo init | 初始化现有目录为 Cargo 项目 |
cargo build | 构建项目 |
cargo run | 构建并运行项目 |
cargo test | 运行测试 |
cargo doc --open | 生成并打开文档 |
cargo update | 更新依赖到最新允许版本 |
cargo publish | 发布项目到 Crates.io |
cargo check | 检查代码 |
Hello, Cargo! 示例
创建一个项目并运行:
cargo new hello_cargo
cd hello_cargo
cargo run
输出:
Hello, world!
通过 Cargo,Rust 的开发变得更高效、更组织化,特别是对于依赖管理和构建流程,极大地提升了开发体验。
相关文章:

Cargo Rust 的包管理器
Cargo->Rust 的包管理器 Cargi简介Cargo 的主要功能1. 创建项目2. 管理依赖3. 构建项目4. 运行项目5. 测试代码6. 检查代码7. 生成文档8. 发布和分享包 Cargo 的核心文件1. Cargo.toml2. Cargo.lock **Cargo 的生态系统** 常用命令总结Hello, Cargo! 示例 Cargi简介 Cargo …...

【Rust 编程语言工具】rustup-init.exe 安装与使用指南
rustup-init.exe 是用于安装和管理 Rust 编程语言工具链的 Windows 可执行文件。Rust 是一种系统级编程语言,旨在提供安全、并发和高性能的功能。rustup-init.exe 是官方提供的安装器,用于将 Rust 安装到 Windows 操作系统中,并配置相关环境。…...

集群聊天服务器(12)nginx负载均衡器
目录 负载均衡器nginx负载均衡器优势 如何解决集群聊天服务器跨服务器通信问题?nginx的TCP负载均衡配置nginx配置 负载均衡器 目前最多只能支持2w台客户机进行同时聊天 所以要引入集群,多服务器。 但是客户连哪一台服务器呢?客户并不知道哪一…...

数据挖掘英语及概念
分类 classify 上涨或跌 回归 regression 描述具体数值 分类模型评估 1.混淆(误差)矩阵 confusion matrix 2.ROC曲线 receiver operating characteristic curve 接收者操作特征曲线 3.AUC面积 area under curve ROC曲线下与坐标轴围成的面积&#x…...
springboot第82集:消息队列kafka,kafka-map
官网下载链接:https://kafka.[apache].org/downloads 我下载的是[Scala]2.12 - kafka_2.12-3.1.0.tgz kafka只需要解压下载的压缩包就行了,我这里解压的路径是D:\kafka_2.12-3.1.0,kafka的运行需要依赖zookeeper,当前版本已经内置…...

sql server查看当前正在执行的sql
#统计某类sql执行次数,并按总体cpu消耗时间降序排序 with a as ( select er.session_id,db_name(er.database_id) as DBNAME,sy.last_batch AS 最后执行时间, er.cpu_time ,er.total_elapsed_time/1000 as sum_elapsed_time_s, CAST(csql.text AS varchar(8000)) A…...

STM32设计学生宿舍监测控制系统-分享
目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 本项目旨在利用STM32单片机为核心,结合传感器技术、无线通信技…...
HAproxy 详解
一、基本概念 1.1 什么是 HAproxy? HAproxy(High Availability Proxy)是一个开源的高性能负载均衡器和反向代理服务器,它主要用于在网络上分发流量,以提高网站或应用程序的可用性和性能。HAproxy 可以处理大量的并发…...

间接采购管理:主要挑战与实战策略
间接采购支出会悄然消耗掉企业的现金流,即使是管理完善的公司也难以避免。这是因为间接支出不直接关联特定客户、产品或项目,使采购人员难以跟踪。但正确管理间接支出能为企业带来显著收益——前提是要有合适的工具。本文将分享管理间接支出的关键信息与…...
2411rust,正与整128
原文 长期以来,Rust在x86-32和x86-64架构上128位整数的对齐与C语言不一致.最近已解决此问题,但该修复带来了一些值得注意的效果. 作为用户,除非如下,否则不用担心: 1,假设i128/u128对齐,而不是用align_of 2,忽略improper_ctypes*检查,并在FFI中使用这些类. 除x86-32和x86-64…...

将 HTML 转换为 JSX:JSX 和 JSX 规则
JSX 是 JavaScript 的语法扩展。您可以在 JavaScript 文件中编写 HTML 格式。 它基于 Web、Html、Css 和 JavaScript。Web 开发人员将页面内容分别编写为 Html 文件,将设计编写为 Css 文件,将逻辑编写为 JavaScript 文件。 须知 : JSX 是一个…...

将 FastAPI 部署到生产服务器(一套 全)
将 FastAPI 部署到生产服务器(全) 文章目录 将 FastAPI 部署到生产服务器(全)一、前言二、Fastapi项目 生产环境配置1. 准备环境2. 编写 FastAPI 应用3. 使用 Uvicorn 运行应用4. 配置生产级服务器 Gunicorn4.1 配置 Gunicorn 和 …...

题解 洛谷 Luogu P1873 [COCI 2011/2012 #5] EKO / 砍树 二分答案 C/C++
题目传送门: P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1873思路: 很简单的二分答案 每次找区间中点 m,判断以 m 为高度砍下的木头是否够 h 即可 代码: #defin…...
SpringCloud SaToken整合微服务 集成Redis 网关路由权限拦截 服务间内部调用鉴权
介绍 作为 API 网关,通常负责路由、负载均衡、安全控制等功能。进行 统一鉴权 的做法意味着将所有微服务的认证和授权逻辑集中到网关层,而不是每个微服务单独实现。这样做有许多好处,微服务只关心核心业务逻辑,不需要处理身份验证…...

Oracle ADB 导入 BANK_GRAPH 的学习数据
Oracle ADB 导入 BANK_GRAPH 的学习数据 1. 下载数据2. 导入数据运行 setconstraints.sql 1. 下载数据 访问 https://github.com/oracle-quickstart/oci-arch-graph/tree/main/terraform/scripts,下载, bank_accounts.csvbank_txns.csvsetconstraints.…...
优化 MFC CGridCtrl 的表格布局与功能
在使用 MFC 的 CGridCtrl 控件创建表格时,遇到的一个典型问题是,当表格滚动条出现时,最后一列会显示空白。这篇博客将记录解决这一问题的详细过程,同时总结了 CGridCtrl 初始化及优化的关键步骤,帮助开发者快速搭建一个…...
koa-body 的详细使用文档
目录 koa-body install Features Hello World - Quickstart Usage with koa-router Usage with unsupported text body type Options 关于 parsedMethods 的说明 文件支持 关于未解析请求主体的说明 一些强大的选择 使用总结 koa-body 功能齐全的 koa body 解析器中…...
信息系统与互联网中的安全、隐私及伦理问题
1 伦理(Ethics) 1.1 伦理框架(Ethical Frameworks) 自然法与权利(Natural Law and Rights) 定义:基于人类自然权利的伦理思想,强调生命、自由和财产等基本权利。应用:隐…...

Java安全—log4j日志FastJson序列化JNDI注入
前言 log4j和fastjson都是这几年比较火的组件,前者是用于日志输出后者则是用于数据转换,今天我们从源码来说一下这两个组件为何会造成漏洞。 实验环境 这里的idea要进行一下配置,因为我们要引用第三方组件,而这些第三方组件都是…...

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】
【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】 一、前文回顾二、CMSIS-NN简介2.1 为什么介绍CMSIS-NN?2.2 CMSIS-NN是什么?2.3 CMSIS-NN核心特性2.4 CMSIS-NN算子支持 三、TFLMCMSIS-NN集成3.1 包含TFLM的STM32项目3.2 理解TFLM…...

JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
小木的算法日记-多叉树的递归/层序遍历
🌲 从二叉树到森林:一文彻底搞懂多叉树遍历的艺术 🚀 引言 你好,未来的算法大神! 在数据结构的世界里,“树”无疑是最核心、最迷人的概念之一。我们中的大多数人都是从 二叉树 开始入门的,它…...