Rust使用Cargo构建项目

news2025/5/31 21:00:44

文章目录

  • 你好,Cargo!
    • 验证Cargo安装
    • 使用Cargo创建项目
      • 新建项目
      • 配置文件解析
      • 默认代码结构
    • Cargo工作流
      • 常用命令速查表
      • 详细使用说明
        • 1. 编译项目
        • 2. 运行程序
        • 3.快速检查
        • 4. 发布版本构建
    • Cargo的设计哲学
      • 约定优于配置
      • 工程化优势
    • 开发建议
      • 1. 新项目初始化​
      • 2. 现有项目迁移​
      • 3. 依赖管理实践
    • 总结

你好,Cargo!

Rust小蟹蟹

Cargo是Rust的构建系统和包管理器。绝大多数Rust开发者使用这个工具管理项目,因为它能自动化处理诸多任务:代码编译、依赖库下载、依赖构建等(代码所需的库文件称为​依赖​)。

即使是简单的"Hello, world!"项目(无依赖),使用Cargo也能获得规范的工程结构。随着项目复杂度提升,Cargo在依赖管理方面的优势将愈发明显。

验证Cargo安装

Cargo会随Rust官方安装包自动安装。验证是否安装成功:

$ cargo --version

若显示版本号(如cargo 1.86.0 (adf9b6ad1 2025-02-28))则表示安装正常。

使用Cargo创建项目

新建项目

在项目目录中执行:

$ cargo new hello_cargo

$ cd hello_cargo

该命令生成以下工程结构:

hello_cargo/

├── Cargo.toml    # 项目配置文件

└── src/

    └── main.rs   # 入口文件

同时自动初始化Git仓库(若当前不在Git仓库中),生成.gitignore文件。

提示:使用cargo new --vcs=git强制生成Git仓库,或–vcs=none跳过版本控制

配置文件解析

Cargo.toml​ 文件内容示例:

[package]
name = "hello_cargo"  # 项目名称
version = "0.1.0"     # 版本号
edition = "2024"      # Rust版本

[dependencies]        # 依赖声明区
  • 使用TOML格式编写配置

  • edition字段指定Rust版本(详见附录E)

  • 依赖将在后续章节中添加

默认代码结构

自动生成的​src/main.rs​包含经典Hello World:

fn main() {

    println!("Hello, world!");

}

Cargo强制约定源代码必须位于src目录,顶层目录存放配置文件、文档等非代码资源。

Cargo工作流

常用命令速查表

命令作用输出路径
cargo build编译调试版本target/debug/
cargo run编译并运行自动选择最新编译结果
cargo check快速语法检查(不生成二进制)
cargo build --release编译优化版本target/release/

详细使用说明

1. 编译项目
$ cargo build
  • 生成调试用可执行文件:target/debug/hello_cargo(Windows为.exe)

  • 首次编译生成Cargo.lock文件(自动跟踪依赖版本)

2. 运行程序
$ ./target/debug/hello_cargo  # 直接运行

$ cargo run                   # 编译后自动运行
  • cargo run会智能判断是否需要重新编译
    运行效果如下图:
    运行效果
3.快速检查
$ cargo check
  • 检查编译错误但不生成二进制文件

  • 速度比完整编译快3-5倍,适合开发时实时验证

4. 发布版本构建

当项目需要部署时,使用优化编译:

$ cargo build --release
  • 生成的可执行文件位于target/release/

  • 启用编译器优化(运行更快,编译更慢)

  • 适合性能测试和最终发布

Cargo的设计哲学

约定优于配置

  • 强制源代码目录结构

  • 标准化配置文件格式

  • 跨平台命令一致性(Linux/macOS/Windows命令相同)

工程化优势

随着项目发展,Cargo的价值体现在:

依赖管理​:自动处理嵌套依赖

工作区支持​:管理多crate项目

构建缓存​:增量编译加速开发

元数据管理​:通过Cargo.toml声明项目属性

开发建议

1. 新项目初始化​

总是使用cargo new创建标准工程结构

2. 现有项目迁移​

手动创建src目录和Cargo.toml,或运行:

$ cargo init

3. 依赖管理实践

  • 添加依赖:直接编辑Cargo.toml的[dependencies]

  • 更新依赖:cargo update

  • 清除缓存:cargo clean

总结

  • Cargo核心功能:构建系统 + 包管理器

  • 使用cargo new创建规范项目

  • 通过build/run/check管理开发流程

  • 区分调试构建与发布构建

  • 理解Cargo的工程化设计理念

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

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

相关文章

Python训练营打卡Day39

DAY 39 图像数据与显存 知识点回顾 1.图像数据的格式:灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 作业:今日代码较少,理解内容…

UE5蓝图中播放背景音乐和使用代码播放声音

UE5蓝图中播放背景音乐 1.创建背景音乐Cube 2.勾选looping 循环播放背景音乐 3.在关卡蓝图中 Event BeginPlay-PlaySound2D Sound选择自己创建的Bgm_Cube 蓝图播放声音方法二: 使用代码播放声音方法一 .h文件中 头文件引用 #include "Kismet/GameplayS…

AI 赋能数据可视化:漏斗图制作的创新攻略

在数据可视化的广阔天地里,漏斗图以其独特的形状和强大的功能,成为展示流程转化、分析数据变化的得力助手。传统绘制漏斗图的方式往往需要耗费大量时间和精力,对使用者的绘图技能和软件操作熟练度要求颇高。但随着技术的蓬勃发展,…

用 Python 模拟下雨效果

用 Python 模拟下雨效果 雨天别有一番浪漫情怀:淅淅沥沥的雨滴、湿润的空气、朦胧的光影……在屏幕上也能感受下雨的美妙。本文将带你用一份简单的 Python 脚本,手把手实现「下雨效果」动画。文章深入浅出,零基础也能快速上手,完…

C#对象集合去重的一种方式

前言 现在AI越来越强大了,有很多问题其实不需要在去各个网站上查了,直接问AI就好了,但是呢,AI给的代码可能能用,也可能需要调整,但是自己肯定是要会的,所以还是总结一下吧。 问题 如果有一个…

在ROS2(humble)+Gazebo+rqt下,实时显示仿真无人机的相机图像

文章目录 前言一、版本检查检查ROS2版本 二、步骤1.下载对应版本的PX4(1)检查PX4版本(2)修改文件名(3)下载正确的PX4版本 2.下载对应版本的Gazebo(1)检查Gazebo版本(2)卸载不正确的Gazebo版本(3)下载正确的Gazebo版本 3.安装bridge包4.启动 总结 前言 在ROS2的环境下&#xff…

github双重认证怎么做

引言 好久没登陆github了, 今天登陆github后,提醒进行2FA认证。 查看了github通知,自 2023 年 3 月起,GitHub 要求所有在 GitHub.com 上贡献代码的用户启用一种或多种形式的双重身份验证 (2FA)。 假如你也遇到这个问题&#xf…

数据的类型——认识你的数据

第02篇:数据的类型——认识你的数据 写在前面:嗨,大家好!我是蓝皮怪。在上一篇文章中,我们聊了统计学的基本概念,今天我们来深入了解一个非常重要的话题——数据的类型。你可能会想:"数据就…

第五十二节:增强现实基础-简单 AR 应用实现

引言 增强现实(Augmented Reality, AR)是一种将虚拟信息叠加到真实世界的技术,广泛应用于游戏、教育、工业维护等领域。与传统虚拟现实(VR)不同,AR强调虚实结合,用户无需完全沉浸到虚拟环境中。本文将通过Python和OpenCV库,从零开始实现一个基础的AR应用:在检测到特定…

LLaMaFactory 微调QwenCoder模型

步骤一:准备LLamaFactory环境 首先,让我们尝试使用github的方式克隆仓库: git config --global http.sslVerify false && git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git # 创建新环境,指定 Python 版本(以 3.…

【最新版】Arduino IDE的安装入门Demo

1、背景说明 1、本教程编写日期为2025-5-24 2、Arduino IDE的版本为:Arduino IDE 2.3.6 3、使用的Arduino为Arduino Uno 1、ArduinoIDE的安装 1、下载。网址如下:官网 2、然后一路安装即可。 期间会默认安装相关驱动,默认安装即可。 3、安…

不起火,不爆炸,高速摄像机、数字图像相关DIC技术在动力电池新国标安全性能测试中的应用

2026年7月1日,我国将正式实施GB38031-2025《电动汽车用动力蓄电池安全要求》——这项被称为“史上最严电池安全令”的新国标,首次将“热失控不蔓延、不起火、不爆炸”从企业技术储备上升为强制性要求,标志着电池安全进入“零容忍”时代&#…

thinkadmin中使用layui日期选择器,数据库存储时间戳

form.html <div class="layui-form-item label-required-prev" id="jiezhi_time-div">

WSL中ubuntu通过Windows带代理访问github

WSL中ubuntu通过Windows带代理访问github 前言: WSL是Windows下的ubuntu访问工具&#xff0c;目前无法访问外网&#xff0c;因此需要配置一下。 步骤一 代理中进行如下设置: 步骤二 ubuntu22.04中修改配置 使用如下命令获取IP地址&#xff1a; ip route | grep default | aw…

RISC-V特权模式及切换

1 RISC-V特权模式基本概念 1.1 RISC-V特权模式介绍 RISC-V 指令集架构&#xff08;ISA&#xff09;采用多特权级别设计作为其核心安全机制&#xff0c;通过层次化的权限管理实现系统资源的隔离与保护。该架构明确定义了四个层次化的特权模式&#xff0c;按照权限等级由高至低…

【深度学习】11. Transformer解析: Self-Attention、ELMo、Bert、GPT

Transformer 神经网络 Self-Attention 的提出动机 传统的循环神经网络&#xff08;RNN&#xff09;处理序列信息依赖时间步的先后顺序&#xff0c;无法并行&#xff0c;而且在捕捉长距离依赖关系时存在明显困难。为了解决这些问题&#xff0c;Transformer 引入了 Self-Attent…

4060显卡什么水平 4060显卡参数介绍

NVIDIA的GeForce RTX 40系列显卡基于最新的Ada Lovelace架构&#xff0c;提供了前所未有的图形处理能力和效率。其中&#xff0c;RTX 4060定位中高端市场&#xff0c;针对那些寻求卓越性能同时又注重成本效益的用户群体。那么&#xff0c;4060显卡什么水平呢&#xff1f;本文将…

技术为器,服务为本:AI时代的客服价值重构

在智能化浪潮中&#xff0c;大语言模型的出现为客户服务行业注入了全新动能。然而技术创新的价值不在于技术本身&#xff0c;而在于其赋能服务的深度与广度。AI对于我们来说&#xff0c;如同发动机之于汽车&#xff0c;重要的不是引擎参数&#xff0c;而是整车带给用户的驾驶体…

EasyVoice:开源的文本转语音工具,让文字“开口说话“

名人说&#xff1a;博观而约取&#xff0c;厚积而薄发。——苏轼《稼说送张琥》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、EasyVoice是什么&#xff1f;1. 核心特性一览2. 技术架构概览 二、安装部署指南…

扫地机产品异物进入吸尘口堵塞异常检测方案

扫地机产品异物进入吸尘口堵塞异常的检测方案 文章目录 扫地机产品异物进入吸尘口堵塞异常的检测方案一.背景二.石头的音频异常检测的方案2.1 音频检测触发点2.1.1时间周期2.1.2根据清洁机器人清扫模式或清扫区域污渍类型,即当清扫模式为深度清洁模式 或清扫区域污渍类型为重度…