Rust使用Cargo構建項目

文章目錄

  • 你好,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.pswp.cn/diannao/85175.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/85175.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/85175.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

免費且好用的PDF水印添加工具

軟件介紹 琥珀掃描.zip下載鏈接:https://pan.quark.cn/s/3a8f432b29aa 今天要給大家推薦一款超實用的PDF添加水印工具,它能夠滿足用戶給PDF文件添加水印的需求,而且完全免費。 這款PDF添加水印的軟件有著簡潔的界面,操作簡便&a…

NW969NW978美光閃存顆粒NW980NW984

NW969NW978美光閃存顆粒NW980NW984 技術解析:NW969、NW978、NW980與NW984的架構創新 美光(Micron)的閃存顆粒系列,尤其是NW969、NW978、NW980和NW984,代表了存儲技術的前沿突破。這些產品均采用第九代3D TLC&#xf…

Mysql常用知識3:Kafka和數據庫優化

文章目錄 一、分布式消息系統(Kafka相關問題5-10)5. Kafka如何保證消息不丟失?6. 項目中Kafka具體怎么使用的?7. 消息異常未發送成功怎么解決?8. 重試具體怎么做的,循環嗎?9. 重試多次失敗怎么辦…

常見的RAG文檔解析輔助工具匯總及企業選型思考

以下當前比較知名的RAG的文檔解析輔助工具的開源項目匯總,包含核心功能、License信息及GitHub地址: 1. RAGFlow 核心功能:支持PDF/掃描件/CAD等23種格式解析,OCR準確率98%,知識圖譜融合,混合檢索&#xf…

基于Sqoop的MySQL-Hive全量/增量同步解決方案(支持多表批量處理

一、全量同步方案設計 1.1 基礎命令模板 sqoop import \ --connect jdbc:mysql://mysql_host:3306/db_name \ --username user \ --password pass \ --table source_table \ --hive-import \ --hive-table target_table \ --hive-overwrite \ # 覆蓋已有表 --num-mappers 8 …

前端學習(7)—— HTML + CSS實現博客系統頁面

目錄 一,效果展示 二,實現博客列表頁 2.1 實現導航欄 2.2 實現個人信息 2.3 實現博客列表 三,實現博客正文頁 3.2 復用 3.4 實現博客正文 四,實現博客登錄頁 4.1 版心 4.2 登錄框 五,實現博客編輯頁 5.1 …

【技能拾遺】——家庭寬帶單線復用布線與配置(移動2025版)

📖 前言:在家庭網絡拓撲中,客廳到弱電箱只預埋了一根網線,由于已將廣電的有線電視取消并改用IPTV。現在需要解決在客廳布置路由器和觀看IPTV問題,這里就用到單線復用技術。 目錄 🕒 1. 拓撲規劃&#x1f55…

VTK|實現類似CloundCompare的測量功能

文章目錄 CloundCompare在點、線、面三種模式下的顯示內容? 圖1:點模式? 圖2:線模式? 圖3:面模式 增加控制菜單欄實現測量功能類如何調用項目git鏈接 CloundCompare在點、線、面三種模式下的顯示內容 點 線 面 三張圖展示了 CloudComp…

4000萬日訂單背后,餓了么再掀即時零售的“效率革命”

當即時零售轉向價值深耕,贏面就是綜合實力的強弱。 文|郭夢儀 編|王一粟 在硝煙彌漫的外賣行業“三國殺”中,餓了么與淘寶閃購的日訂單量竟然突破了4000萬單。 而距淘寶閃購正式上線,還不到一個月。 在大額福利優惠…

vedio.ontimeupdate()和video.onloadeddata()

video.onloadeddata &#xff08;&#xff09; video.onloadeddata 是 JavaScript 中用于監聽 HTML <video> 元素 「當前幀數據已加載」 的事件處理器。當視頻的第一幀畫面數據加載完成&#xff08;足以開始播放&#xff09;時&#xff0c;會觸發此事件。 1. 基本用法 …

Baklib內容中臺革新企業知識實踐

Baklib智能知識中樞構建 作為現代企業知識管理的核心架構&#xff0c;Baklib內容中臺通過整合多源異構數據形成智能化知識中樞&#xff0c;實現從信息采集到價值轉化的全鏈路管理。其底層采用跨平臺數據貫通技術&#xff0c;支持API接口與企業現有CRM、ERP系統無縫對接&#x…

用不太嚴謹的文字介紹遙測自跟蹤天線的基本原理

前兩天跟一個客戶見面的時候&#xff0c;客戶問我&#xff1a;遙測自跟蹤天線能夠跟蹤目標&#xff0c;是什么原理&#xff1f;不需要目標的位置&#xff0c;怎么做到自跟蹤的&#xff1f; 突然一瞬間&#xff0c;有點語塞。 難道要介紹天線、饋源、極化、左旋、右旋、和差網…

VS配置redis環境、redis簡單封裝

一、安裝redis數據庫 1.下載redis的壓縮包 wget https://download.redis.io/releases/redis-6.0.5.tar.g 2.解壓縮redis壓縮包&#xff0c;一般就在當前路徑 tar -zvxf redis-6.0.5.tar.gz -C /usr/local/redis 方便找我把它解壓縮在/usr/local/redis&#xff0c;如果沒有r…

C++23 已移除特性解析

文章目錄 引言C23 已移除特性介紹1. 垃圾收集的支持和基于可達性的泄漏檢測&#xff08;P2186R2&#xff09;背景與原理存在的問題移除的影響 2. 混合寬字符串字面量拼接非良構&#xff08;P2201R1&#xff09;寬字符串編碼概述混合拼接的問題示例分析移除的意義 3. 不可編碼寬…

Cloudflare

Cloudflare 是一個網絡基礎設施和網站安全服務提供商&#xff0c;它的主要作用是讓網站 更快、更安全、更可靠。簡單來說&#xff0c;它是一個“護盾 加速器”。 &#x1f9e9; Cloudflare 的主要功能&#xff1a; 1. &#x1f680; 加速網站訪問&#xff08;CDN&#xff09…

Spring Boot啟動慢?Redis緩存擊穿?Kafka消費堆積?——Java后端常見問題排查實戰

Spring Boot啟動慢&#xff1f;Redis緩存擊穿&#xff1f;Kafka消費堆積&#xff1f;——Java后端常見問題排查實戰 引言 Java后端系統因其豐富的技術棧和復雜的業務邏輯&#xff0c;常常面臨啟動延遲、性能瓶頸、異常錯誤等多種挑戰。從核心語言、Web框架到分布式微服務及緩…

數字人引領政務新風尚:智能設備助力政務服務

在信息技術飛速發展的今天&#xff0c;政府機構不斷探索提升服務效率和改善服務質量的新途徑。實時交互數字人在政務服務中的應用正成為一大亮點&#xff0c;通過將“數字公務員”植入各種橫屏智能設備中&#xff0c;為民眾辦理業務提供全程輔助。這種創新不僅優化了政務大廳的…

ToolsSet之:十六進制及二進制編輯運算工具

ToolsSet是微軟商店中的一款包含數十種實用工具數百種細分功能的工具集合應用&#xff0c;應用基本功能介紹可以查看以下文章&#xff1a; Windows應用ToolsSet介紹https://blog.csdn.net/BinField/article/details/145898264 ToolsSet中Number菜單下的Hex Operate工具可以進…

DSP處理數字信號做什么用的?

DSP&#xff08;數字信號處理器&#xff09;的核心任務是高效、實時地處理數字信號&#xff0c;通過專用硬件架構和算法優化&#xff0c;完成對信號的轉換、增強、分析和控制。以下是DSP處理數字信號的主要用途及典型場景&#xff1a; 1. 信號增強與優化 降噪&#xff08;Noise…

電腦如何保養才能用得更久

在這個數字化的時代&#xff0c;電腦已經成為了我們生活和工作中不可或缺的伙伴。無論是處理工作文檔、追劇娛樂&#xff0c;還是進行創意設計&#xff0c;電腦都發揮著至關重要的作用。那么&#xff0c;如何讓我們的電腦“健康長壽”&#xff0c;陪伴我們更久呢&#xff1f;今…