Rust語言基礎知識詳解【一】

1.在windows上安裝Rust

Windows 上安裝 Rust 需要有 C++ 環境,以下為安裝的兩種方式:

1. x86_64-pc-windows-msvc(官方推薦)

先安裝 Microsoft C++ Build Tools,勾選安裝 C++ 環境即可。安裝時可自行修改緩存路徑與安裝路徑,避免占用過多 C 盤空間。

準備好 C++ 環境后開始安裝 Rust:

在 RUSTUP-INIT 下載系統相對應的 Rust 安裝程序,一路默認即可。

PS C:\Users\48370> rustup-init.exe
......
Current installation options:
?default host triple: x86_64-pc-windows-msvcdefault toolchain: stable (default)profile: defaultmodify PATH variable: yes
?
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation

2.更新

要更新 Rust,在終端執行以下命令即可更新:

$ rustup update

3.卸載

要卸載 Rust 和 rustup,在終端執行以下命令即可卸載:

$ rustup self uninstall

4.檢查是否安裝成功

檢查是否正確安裝了 Rust,可打開終端并輸入下面這行,此時能看到最新發布的穩定版本的版本號、提交哈希值和提交日期:

$ rustc -V
rustc 1.56.1 (59eed8a2a 2021-11-01)
?
$ cargo -V
cargo 1.57.0 (b2e52d7ca 2021-10-21)

注:若發現版本號不同,以您的版本號為準

恭喜,你已成功安裝 Rust!

5.開發工具

這里我選擇的是Jetbrains的RustRover,因為已經習慣使用Jetbrains全家桶的工具了,也可以使用VSCode【需要下載對應的rust-analyzer插件】。

2.認識Cargo

Cargo 是 Rust 語言的官方包管理器和構建工具,集成了代碼編譯、依賴管理、測試運行、文檔生成、包發布等功能。它是 Rust 生態系統的核心工具,幾乎每個 Rust 項目都會使用 Cargo 來管理。

核心功能

1. 項目管理

  • 項目初始化 通過 cargo newcargo init 創建項目,自動生成標準目錄結構和配置文件:

    cargo new my_project ? # 創建二進制可執行項目
    cargo new --lib my_lib # 創建庫項目

    生成的文件結構:

    my_project/├── Cargo.toml ? # 項目元數據和依賴配置├── Cargo.lock ? # 新增的鎖定文件├── .gitignore ? # 默認忽略 target/ 目錄└── src/└── main.rs ?# 主入口文件(或 lib.rs 用于庫)
  • Cargo.toml 項目的核心配置文件,包含:

    • 元數據:項目名稱、版本、作者、許可證等。

    • 依賴聲明:直接依賴、開發依賴、構建依賴。

    • 構建配置:優化選項、特性開關(features)、目標平臺等。

    示例:

    [package]
    name = "my_project"
    version = "0.1.0"
    authors = ["Your Name <your@email.com>"]
    edition = "2021" ?# Rust 版本
    ?
    [dependencies]
    serde = "1.0" ? ? # 直接依賴
    tokio = { version = "1.0", features = ["full"] }
    ?
    [dev-dependencies]
    rand = "0.8" ? ? ?# 僅測試和示例使用的依賴
  • Cargo.lock

當首次運行 cargo build 或添加依賴后,Cargo 會自動生成 Cargo.lock 文件。它記錄了項目依賴的精確版本信息,確保每次構建時依賴版本的一致性。

  • 位置:項目根目錄下的 Cargo.lock

  • 作用:

    • 鎖定所有依賴的具體版本(包括間接依賴)。

    • 確保團隊成員或部署環境使用完全相同的依賴版本。

    • 防止因依賴版本意外升級導致構建失敗或行為不一致。

與 Cargo.toml 的區別

Cargo.tomlCargo.lock
編輯方式手動編輯(聲明依賴的版本范圍)自動生成(記錄依賴的精確版本)
版本控制必須提交到版本庫應用項目建議提交,庫項目通常不提交
示例內容serde = "1.0"(允許語義化版本更新)serde = { version = "1.0.189" }

2. 依賴管理

  • 依賴來源

    • crates.io:默認的公共包倉庫(類似 npm 的 registry)。

    • Git 倉庫:直接從 Git 倉庫拉取代碼。

    • 本地路徑:引用本地其他項目作為依賴。

    示例:

    [dependencies]
    # 從 crates.io 獲取
    regex = "1.5"
    # 從 GitHub 分支獲取
    my_lib = { git = "https://github.com/user/my_lib", branch = "dev" }
    # 本地路徑依賴
    local_lib = { path = "../local_lib" }
  • 版本解析 Cargo 使用語義化版本(SemVer)管理依賴,并自動解析依賴沖突,生成精確版本的依賴關系(記錄在 Cargo.lock 文件中)。

3. 構建與編譯

  • 基本命令

    • cargo build:編譯項目,生成調試版二進制文件(位于 target/debug/)。

    • cargo build --release:編譯優化后的生產版本(位于 target/release/)。

    • cargo run:編譯并直接運行主程序。

    • cargo check:快速檢查代碼語法和類型,不生成二進制文件。

  • 增量編譯 Cargo 默認啟用增量編譯,僅重新編譯修改過的部分,大幅提升開發效率。

4. 測試與文檔

  • 單元測試與集成測試

    • 在代碼中使用 #[test] 標記測試函數。

    • 通過 cargo test 運行所有測試。

    • 支持測試過濾(如 cargo test test_add 運行特定測試)。

  • 文檔生成

    • 使用 /////! 編寫文檔注釋。

    • 通過 cargo doc 生成 HTML 文檔,自動托管依賴的文檔鏈接。

    • cargo doc --open 直接在瀏覽器中打開文檔。

    示例:

    /// 計算兩個數的和
    /// # 示例
    /// ```
    /// assert_eq!(add(2, 3), 5);
    /// ```
    pub fn add(a: i32, b: i32) -> i32 {a + b
    }

3.Hello World!

在學習一門新的語言最開始的時候,都是要從輸出hello world!開始的。下面演示一下創建rust項目以及編寫、運行hello world程序。

  • 首先打開RustRover,點擊“文件”->“新建”->“項目”

然后點擊“創建”,這樣就新建了一個rust項目。

  • 這是創建好的項目結構

  • 接下來在main.rs中寫對應的程序,如下:

    fn main() {println!("Hello, world!");
    }

點擊圖中的箭頭就可以運行程序了,控制臺輸出結果如下:

  • 接下來是對代碼的解釋:

    1. fn main() { ... }

    • 作用:定義程序的入口函數

    • 細節

      • 每個可執行 Rust 程序必須有一個 main 函數

      • fn 是函數定義的關鍵字(function 的縮寫)

      • 函數體必須用花括號 {} 包裹

      • Rust 使用 4 空格縮進(非強制但社區約定)

    2. println!("Hello, World!");

    • 作用:向標準輸出打印文本

    • 分解

      • println! 是一個 (macro),不是普通函數,注意結尾的 ! 符號

      • "Hello, World!" 是一個字符串字面量

      • 行尾必須有分號 ;(Rust 中大多數語句以分號結尾)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71704.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71704.shtml

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

相關文章

文章精讀篇——OMG-Seg

題目&#xff1a;OMG-Seg : Is One Model Good Enough For All Segmentation? 作者&#xff1a;Xiangtai Li1 ? Haobo Yuan1 Wei Li1 Henghui Ding1 Size Wu1 Wenwei Zhang1Yining Li2 Kai Chen2 Chen Change Loy1 代碼&#xff1a;OMG-Seg 會議&#xff1a;cvpr2024 邊讀…

vite 開啟 gzip壓縮

使用vite 如何開啟 gzip壓縮 文章目錄 使用vite 如何開啟 gzip壓縮1. 引言為什么需要 Gzip 壓縮&#xff1f;Gzip 壓縮的作用 2. Vite 項目中的 Gzip 壓縮Vite 的基本概念Gzip 壓縮的原理 3. 使用 Vite 插件開啟 Gzip 壓縮安裝 vite-plugin-compression配置 vite-plugin-compre…

【Qt學習】| 如何使用QVariant存儲自定義類型

QVariant是Qt框架中的一個通用數據類型&#xff0c;可以存儲多種類型的數據&#xff0c;主要作用是提供一種類型安全的方式來存儲和傳遞不同類型的數據&#xff0c;而不需要顯示地指定數據類型。 QVariant提供了諸多構造函數可以非常方便地對基礎數據類型&#xff08;如&#x…

【Python量化金融實戰】-第1章:Python量化金融概述:1.4 開發環境搭建:Jupyter Notebook、VS Code、PyCharm

在量化金融開發中&#xff0c;選擇合適的開發環境至關重要。本章介紹三種主流工具&#xff1a;Jupyter Notebook&#xff08;交互式分析&#xff09;、VS Code&#xff08;輕量級編輯器&#xff09;、PyCharm&#xff08;專業IDE&#xff09;&#xff0c;并通過實戰案例展示其應…

查看 nginx 是否已經啟動

在 Ubuntu 或其他 Linux 系統上&#xff0c;要查看 Nginx 是否已經啟動&#xff0c;您可以使用以下幾種方法之一&#xff1a; 方法一&#xff1a;使用 systemctl 命令 Nginx 通常作為 systemd 服務運行&#xff0c;因此您可以使用 systemctl 命令來檢查其狀態。 打開終端。 …

解釋 Vue 中的虛擬 DOM,如何通過 Diff 算法最小化真實 DOM 更新次數?

1. 虛擬DOM核心原理&#xff08;附代碼示例&#xff09; // 簡化的VNode結構示意 class VNode {constructor(tag, data, children) {this.tag tag // 標簽名this.data data // 屬性/指令等this.children children // 子節點數組} }// 兩個新舊虛擬節點樹示例 const oldV…

Pytorch使用手冊-音頻數據增強(專題二十)

音頻數據增強 torchaudio 提供了多種方式來增強音頻數據。 在本教程中,我們將介紹一種應用效果、濾波器、RIR(房間脈沖響應)和編解碼器的方法。 最后,我們將從干凈的語音合成帶噪聲的電話語音。 import torch import torchaudio import torchaudio.functional as Fprin…

Linux-Ansible模塊擴展

文章目錄 Archive UnarchiveSetup模塊Lineinfile Replace &#x1f3e1;作者主頁&#xff1a;點擊&#xff01; &#x1f916;Linux專欄&#xff1a;點擊&#xff01; ??創作時間&#xff1a;2025年02月23日18點11分 Archive Unarchive Archive和Unarchive模塊 需求&#x…

Redhat及其衍生系統安裝python

目錄 更新包列表 安裝 Python 3 安裝特定版本的 Python 驗證安裝 安裝 pip 更新包列表 在安裝任何軟件之前&#xff0c;建議先更新系統的包列表&#xff0c;以確保安裝的是最新版本的軟件包&#xff1a; sudo dnf update 安裝 Python 3 RHEL 9 默認安裝了 Python 3&…

Python條件控制和循環語句

目錄 條件控制語句 1. if 語句 2. if-else 語句 3. if-elif-else 語句 循環語句 1. for 循環 2. while 循環 循環控制語句 1. break 語句 2. continue 語句 3. else 子句&#xff08;與循環結合&#xff09; 嵌套循環 常見應用場景 條件控制 循環語句 條件控制語…

*PyCharm 安裝教程

PyCharm 安裝教程&#xff0c;適用于 Windows、macOS 和 Linux 系統&#xff1a; 1. 下載 PyCharm 官網地址&#xff1a;https://www.jetbrains.com/pycharm/版本選擇&#xff1a; Community&#xff08;社區版&#xff09;&#xff1a;免費&#xff0c;適合基礎 Python 開發…

Three.js 快速入門教程【二】透視投影相機

系列文章目錄 系列文章目錄 Three.js 快速入門教程【一】開啟你的 3D Web 開發之旅 Three.js 快速入門教程【二】透視投影相機 Three.js 快速入門教程【三】渲染器 Three.js 快速入門教程【四】三維坐標系 Three.js 快速入門教程【五】動畫渲染循環 Three.js 快速入門教程【六…

IntelliJ IDEA 控制臺輸出中文出現亂碼

IntelliJ IDEA 控制臺輸出中文出現亂碼通常是由于編碼設置不一致導致的。以下是常見原因及解決方法 1. 項目編碼設置 檢查路徑&#xff1a;File → Settings → Editor → File Encodings 確保 Project Encoding、Global Encoding 和 Default Encoding for Properties Files 均…

C#初級教程(7)——初級期末檢測

練習 1&#xff1a;計算圓的周長和面積 改編題目&#xff1a;編寫一個 C# 程序&#xff0c;讓用戶輸入圓的半徑&#xff0c;然后計算并輸出該圓的周長和面積&#xff0c;結果保留兩位小數。 using System;class CircleCalculation {static void Main(){const double pi 3.14…

Java 集合:單列集合和雙列集合的深度剖析

引言 在 Java 編程中&#xff0c;集合是一個非常重要的概念。它就像是一個容器&#xff0c;能夠存儲多個數據元素&#xff0c;幫助我們更方便地管理和操作數據。Java 集合框架主要分為單列集合和雙列集合兩大類&#xff0c;它們各自有著獨特的特點和適用場景。接下來&#xff0…

layui 遠程搜索下拉選擇組件(多選)

模板使用&#xff08;lay-module/searchSelect&#xff09;&#xff0c;依賴于 jquery、layui.dist 中的 dropdown 模塊實現&#xff08;所以data 格式請參照 layui文檔&#xff09; <link rel"stylesheet" href"layui-v2.5.6/dist/css/layui.css" /&g…

通俗易懂的DOM1級標準介紹

前言 在前端開發中&#xff0c;DOM&#xff08;文檔對象模型&#xff09;是我們操作網頁內容的核心工具。前面的文章我們介紹了DOM0級、DOM2級事件模型&#xff0c;沒有DOM1級事件模型這種概念&#xff0c;但有DOM1級標準。今天我們就來討論DOM1級標準&#xff0c;看看它到底做…

python~http的請求參數中攜帶map

背景 調試 http GET請求的 map 參數&#xff0c;鏈路攜帶參數一直有問題&#xff0c;最終采用如下方式攜帶map 解決 user{"demo":"true","info":"王者"}url encode之后的效果如下所示 user%7B%22demo%22:%22true%22,%22info%22:%22…

(java/Spring boot)使用火山引擎官方推薦方法向大模型發送請求

首先在maven里面引入官方依賴 <dependency><groupId>com.volcengine</groupId><artifactId>volcengine-java-sdk-ark-runtime</artifactId><version>LATEST</version></dependency>然后我們編寫測試類 package com.volcengin…

Scrum方法論指導下的Deepseek R1醫療AI部署開發

一、引言 1.1 研究背景與意義 在當今數智化時代&#xff0c;軟件開發方法論對于項目的成功實施起著舉足輕重的作用。Scrum 作為一種廣泛應用的敏捷開發方法論&#xff0c;以其迭代式開發、快速反饋和高效協作的特點&#xff0c;在軟件開發領域占據了重要地位。自 20 世紀 90 …