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

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 是一种系统级编程语言&#xff0c;旨在提供安全、并发和高性能的功能。rustup-init.exe 是官方提供的安装器&#xff0c;用于将 Rust 安装到 Windows 操作系统中&#xff0c;并配置相关环境。…...

集群聊天服务器(12)nginx负载均衡器

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

数据挖掘英语及概念

分类 classify 上涨或跌 回归 regression 描述具体数值 分类模型评估 1.混淆&#xff08;误差&#xff09;矩阵 confusion matrix 2.ROC曲线 receiver operating characteristic curve 接收者操作特征曲线 3.AUC面积 area under curve ROC曲线下与坐标轴围成的面积&#x…...

springboot第82集:消息队列kafka,kafka-map

官网下载链接&#xff1a;https://kafka.[apache].org/downloads 我下载的是[Scala]2.12 - kafka_2.12-3.1.0.tgz kafka只需要解压下载的压缩包就行了&#xff0c;我这里解压的路径是D:\kafka_2.12-3.1.0&#xff0c;kafka的运行需要依赖zookeeper&#xff0c;当前版本已经内置…...

sql server查看当前正在执行的sql

#统计某类sql执行次数&#xff0c;并按总体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设计学生宿舍监测控制系统-分享

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 本项目旨在利用STM32单片机为核心&#xff0c;结合传感器技术、无线通信技…...

HAproxy 详解

一、基本概念 1.1 什么是 HAproxy&#xff1f; HAproxy&#xff08;High Availability Proxy&#xff09;是一个开源的高性能负载均衡器和反向代理服务器&#xff0c;它主要用于在网络上分发流量&#xff0c;以提高网站或应用程序的可用性和性能。HAproxy 可以处理大量的并发…...

间接采购管理:主要挑战与实战策略

间接采购支出会悄然消耗掉企业的现金流&#xff0c;即使是管理完善的公司也难以避免。这是因为间接支出不直接关联特定客户、产品或项目&#xff0c;使采购人员难以跟踪。但正确管理间接支出能为企业带来显著收益——前提是要有合适的工具。本文将分享管理间接支出的关键信息与…...

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 文件&#xff0c;将设计编写为 Css 文件&#xff0c;将逻辑编写为 JavaScript 文件。 须知 &#xff1a; JSX 是一个…...

将 FastAPI 部署到生产服务器(一套 全)

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

题解 洛谷 Luogu P1873 [COCI 2011/2012 #5] EKO / 砍树 二分答案 C/C++

题目传送门&#xff1a; P1873 [COCI 2011/2012 #5] EKO / 砍树 - 洛谷 | 计算机科学教育新生态https://www.luogu.com.cn/problem/P1873思路&#xff1a; 很简单的二分答案 每次找区间中点 m&#xff0c;判断以 m 为高度砍下的木头是否够 h 即可 代码&#xff1a; #defin…...

SpringCloud SaToken整合微服务 集成Redis 网关路由权限拦截 服务间内部调用鉴权

介绍 作为 API 网关&#xff0c;通常负责路由、负载均衡、安全控制等功能。进行 统一鉴权 的做法意味着将所有微服务的认证和授权逻辑集中到网关层&#xff0c;而不是每个微服务单独实现。这样做有许多好处&#xff0c;微服务只关心核心业务逻辑&#xff0c;不需要处理身份验证…...

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&#xff0c;下载&#xff0c; bank_accounts.csvbank_txns.csvsetconstraints.…...

优化 MFC CGridCtrl 的表格布局与功能

在使用 MFC 的 CGridCtrl 控件创建表格时&#xff0c;遇到的一个典型问题是&#xff0c;当表格滚动条出现时&#xff0c;最后一列会显示空白。这篇博客将记录解决这一问题的详细过程&#xff0c;同时总结了 CGridCtrl 初始化及优化的关键步骤&#xff0c;帮助开发者快速搭建一个…...

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 伦理&#xff08;Ethics&#xff09; 1.1 伦理框架&#xff08;Ethical Frameworks&#xff09; 自然法与权利&#xff08;Natural Law and Rights&#xff09; 定义&#xff1a;基于人类自然权利的伦理思想&#xff0c;强调生命、自由和财产等基本权利。应用&#xff1a;隐…...

Java安全—log4j日志FastJson序列化JNDI注入

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

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】

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

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...