日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Rust學習筆記:基礎概念介紹

來源: 責編: 時間:2024-03-19 09:22:30 241觀看
導讀Rust背景讓我們從Rust語言的背景開始,探索它的起源。Rust最初是Mozilla研究院在2006年的一個個人項目。第一個穩定的公開版本發布于2015年5月,但在此之前Mozilla已經在生產軟件中使用了Rust。2021年,Rust基金會成立,其憲

LoJ28資訊網——每日最新資訊28at.com

Rust背景

讓我們從Rust語言的背景開始,探索它的起源。Rust最初是Mozilla研究院在2006年的一個個人項目。第一個穩定的公開版本發布于2015年5月,但在此之前Mozilla已經在生產軟件中使用了Rust。2021年,Rust基金會成立,其憲章是管理Rust發布路線圖和語言治理。多年來,許多大公司(如亞馬遜、谷歌、微軟、Meta等)采用Rust進行系統和應用程序開發。截至撰寫本文時,當前的發布版本是1.74.0。LoJ28資訊網——每日最新資訊28at.com

Rust被認為是一種重要的語言,主要原因是它的執行速度、內存管理/安全性以及并發能力。LoJ28資訊網——每日最新資訊28at.com

與其他語言相比,Rust程序免受以下問題的困擾:LoJ28資訊網——每日最新資訊28at.com

  • 懸空指針
  • 數據競爭
  • 緩沖區溢出
  • 迭代器失效

當你開始使用Rust時,我發現最令人沮喪但同時也最有益的能力是,編譯器幾乎會引導你編寫正確的代碼。但它非常挑剔。Rust是一種靜態且強類型的語言。變量類型必須在編譯時已知,試圖將一種類型的變量賦值給另一種類型的變量會導致編譯錯誤。編譯器會提供盡可能多的信息,甚至是解決方案。LoJ28資訊網——每日最新資訊28at.com

下面是一個嘗試將字符串傳遞給無符號整數變量的人為示例。LoJ28資訊網——每日最新資訊28at.com

LoJ28資訊網——每日最新資訊28at.com

在Mac上,您還需要運行以下命令來啟用從命令行啟動VS Code。在VS Code中通過運行以下命令來完成此操作。LoJ28資訊網——每日最新資訊28at.com

通過??P打開命令面板,并鍵入shell command來找到Shell Command:LoJ28資訊網——每日最新資訊28at.com

在執行“Install ‘code’ command in PATH”命令之前,先使用“Uninstall ‘code’ command in PATH”命令。LoJ28資訊網——每日最新資訊28at.com

LoJ28資訊網——每日最新資訊28at.com

執行該命令后,您就可以在任何文件夾中簡單地鍵入 code . 來打開VS Code并開始編輯該文件夾中的文件。LoJ28資訊網——每日最新資訊28at.com

Rust Playground

在Rust的入門討論中,如果不提到這個對語言學習者來說神奇的工具,那就不完整了。如果你想嘗試運行Rust代碼,卻不想安裝它,或者你想快速測試一些代碼,可以使用Rust Playground:https://play.rust-lang.org/。這是一個功能齊全的Rust環境,允許你交互、調試甚至分享你的Rust代碼。LoJ28資訊網——每日最新資訊28at.com

Rust Playground擁有很多優秀的功能。這包括訪問用于格式化或審查Rust代碼的工具(我們將在下面探討這些)。如你所見,它甚至能輕松地與他人分享代碼,比如,通過點擊這個鏈接:LoJ28資訊網——每日最新資訊28at.com

https://play.rust-lang.org/?versinotallow=stable&mode=debug&editinotallow=2021&gist=94762255ffdfc1bf6ca26a6ec10154b9LoJ28資訊網——每日最新資訊28at.com

Cargo

Cargo是Rust的構建系統和包管理器。Cargo為你處理許多任務,如構建代碼、下載代碼依賴的庫以及構建這些依賴。我發現使用Cargo是管理Rust項目最簡單的方式。LoJ28資訊網——每日最新資訊28at.com

% cargo --versioncargo 1.74.0 (ecb9851af 2023-10-18)

這是我當前系統上的結果,因為我正在運行Rust 1.74.0。LoJ28資訊網——每日最新資訊28at.com

Cargo允許高效管理新項目,讓我向你展示我覺得有用的流程。LoJ28資訊網——每日最新資訊28at.com

cargo new hello_cargocd hello_cargocode .

這將創建一個帶有依賴管理文件、git文件的新項目,切換到那個目錄,然后用VS Code打開那個文件夾。LoJ28資訊網——每日最新資訊28at.com

創建的依賴管理文件名為Cargo.toml。toml是Cargo的配置格式。LoJ28資訊網——每日最新資訊28at.com

[package]name = "hello_cargo"version = "0.1.0"edition = "2021"# 詳細信息請見 https://doc.rust-lang.org/cargo/reference/manifest.html[dependencies]

Cargo希望你的源文件位于src目錄內。LoJ28資訊網——每日最新資訊28at.com

如果你通過其他方式開始一個項目,可以通過確保項目代碼在src目錄內,并創建一個適當的Cargo.toml文件(如上所示),輕松將其轉換為使用Cargo的項目。LoJ28資訊網——每日最新資訊28at.com

常用的Cargo命令包括:LoJ28資訊網——每日最新資訊28at.com

# 清理項目的構建產物cargo clean# 檢查是否能編譯,但不進行構建cargo check# 構建項目cargo build# 構建不帶調試信息的發布版本cargo build --release# 運行項目cargo run# 打開包含項目文檔的頁面(包括任何///注釋)cargo doc --open# 自動修復代碼問題cargo fix

Crate(箱)

在Rust中,crate是編譯器一次考慮的最小代碼單元。crate有兩種形式:二進制crate和庫crate。二進制crate是你可以編譯成可執行文件的程序,比如命令行程序或服務器。這些程序有一個叫做main的函數。Crate可以包含模塊,這些模塊可能在其他文件中定義。LoJ28資訊網——每日最新資訊28at.com

庫crate沒有main函數,它們不編譯成可執行文件。相反,它們定義的功能旨在與多個項目共享。LoJ28資訊網——每日最新資訊28at.com

包(package)是一個或多個crate的捆綁,提供一組功能。包含一個Cargo.toml文件,描述如何構建這些crate。LoJ28資訊網——每日最新資訊28at.com

在本系列后續文章中,我們將看到如何將應用程序分割成不同的crate、包和模塊的示例。LoJ28資訊網——每日最新資訊28at.com

工具

rustfmt

rustfmt是一個工具,用于根據社區代碼風格指南格式化Rust代碼。它是非常可配置的,你可以創建一個名為rustfmt.toml的文件,并設置這里找到的任何參數來格式化你的代碼。LoJ28資訊網——每日最新資訊28at.com

直接運行:LoJ28資訊網——每日最新資訊28at.com

rustfmt main.rs

由于我發現Cargo是所有命令行工具的首選選項,我只需簡單運行:LoJ28資訊網——每日最新資訊28at.com

cargo fmt

注意,rustfmt也是Rust Playground中TOOLS下的一個選項。LoJ28資訊網——每日最新資訊28at.com

clippy

Clippy工具是一組靜態代碼分析規則的集合,用于標記編程錯誤、bug、風格錯誤和可疑結構。Clippy用于分析你的代碼,以便你可以捕捉常見錯誤并改進你的Rust代碼。LoJ28資訊網——每日最新資訊28at.com

它可以通過輸入以下命令簡單運行:LoJ28資訊網——每日最新資訊28at.com

cargo clippy

注意,clippy也是Rust Playground中TOOLS下的一個選項。LoJ28資訊網——每日最新資訊28at.com

Primitive Types

在本文的最后一部分,我們將探討Rust支持的原始類型(primitive types)。LoJ28資訊網——每日最新資訊28at.com

Rust中最簡單的類型被稱為原始類型。這些包括數字、字符和字符串。我們將從整數類型開始,即沒有小數點的整數。整數類型分為有符號和無符號兩種。LoJ28資訊網——每日最新資訊28at.com

有符號整數類型以字母‘i’開頭,大小范圍從8到128,如下所示。LoJ28資訊網——每日最新資訊28at.com

  • i8
  • i16
  • i32
  • i64
  • i128

無符號整數類型以字母‘u’開頭,大小范圍同樣從8到128,如下所示。LoJ28資訊網——每日最新資訊28at.com

  • u8
  • u16
  • u32
  • u64
  • u128

Rust使用usize作為索引的大小。usize是用于索引的最佳大小,因為索引不能為負數,允許在大型索引空間中靈活使用,并且需要適應32位計算機。LoJ28資訊網——每日最新資訊28at.com

只要源變量中的內容能夠適應目標變量類型的最大值,你就可以在不同整數類型之間進行賦值。下面是一個例子。如果將第二行改為128,則第四行將失敗,因為i8類型的最大值是127,而我們聲明它為i8。LoJ28資訊網——每日最新資訊28at.com

fn main() {    let mut i = 127;    let j: i8 = 12;    i = j;    println!("{}", i)}

我們將在后面討論mut關鍵字的使用,但現在只需知道它允許在聲明后對i進行賦值。默認情況下,變量是不可變的(不允許被更改)。LoJ28資訊網——每日最新資訊28at.com

如果未聲明類型,則整數的默認大小為i32,所以上面的變量i將是i32類型。LoJ28資訊網——每日最新資訊28at.com

浮點數是帶有小數點的數字。10.5是一個浮點數,而2是一個整數。就像整數一樣,它們由諸如f32或f64之類的類型定義。也像整數一樣,如果環境支持,f64是默認的浮點數類型。LoJ28資訊網——每日最新資訊28at.com

字符(char)類型始終使用4個字節。但字符串不同,單個字符不總是使用4個字節。當字符是字符串的一部分(而不是char類型)時,字符串被編碼為使用每個字符所需的最少內存量。LoJ28資訊網——每日最新資訊28at.com

字符的大小和字符串的變化如下面的代碼片段所示。LoJ28資訊網——每日最新資訊28at.com

use std::time::{Instant};fn main() {    let now = Instant::now();    println!("Size of a char: {}", std::mem::size_of::<char>());    println!("Size of a: {}", "a".len());    println!("Size of ?: {}", "?".len());    println!("Size of 國: {}", "國".len());    println!("Size of : {}", "".len());    let now2 = Instant::now();    println!("==> {} ms", now2.duration_since(now).as_micros());}

結果如下。請注意,還添加了一些代碼來顯示微秒級的運行時長。LoJ28資訊網——每日最新資訊28at.com

Size of a char: 4Size of a: 1Size of ?: 2Size of 國: 3Size of : 4==> 6773 ms

請注意,.len()方法返回的是字節數,而不是字母數。LoJ28資訊網——每日最新資訊28at.com

上面的例子展示了如何從Instant庫中包含一個標準庫函數,now()。這是在頂部使用use關鍵字包含的。LoJ28資訊網——每日最新資訊28at.com

每種類型的詳細信息可以在這里找到。LoJ28資訊網——每日最新資訊28at.com

https://doc.rust-lang.org/reference/types.htmlLoJ28資訊網——每日最新資訊28at.com

總結

這篇文章為學習Rust語言打下了基礎。我們探討了安裝Rust、運行程序的替代方案、基本工具以及Rust中可用的原始數據類型的概述。在下一節中,我們將探討內存管理的重要話題,以及借用(borrowing)、遮蔽(shadowing)、所有權(ownership)以及不可變性等概念。理解這些概念,其中一些是Rust獨有的,對于精通這種語言至關重要。LoJ28資訊網——每日最新資訊28at.com

Rust的內存管理是其核心特性之一,不同于傳統語言如C或C++中的手動內存管理,Rust通過所有權系統自動處理內存,旨在減少內存泄漏和其他常見錯誤。在Rust中,每一個值都有一個被稱為其“所有者”的變量,值在任何時候都只能有一個所有者。當所有者離開作用域時,值將被丟棄。LoJ28資訊網——每日最新資訊28at.com

借用是Rust中另一個重要概念。它允許我們創建指向數據的引用,但不取得所有權。這意味著數據可以被多個部分的代碼安全地訪問,而不會引起數據競爭或其他問題。LoJ28資訊網——每日最新資訊28at.com

遮蔽則允許我們重新使用變量名。這意味著你可以在同一個作用域內聲明一個新的同名變量,新變量會“遮蔽”掉舊變量。LoJ28資訊網——每日最新資訊28at.com

不可變性是Rust的另一個核心概念。在Rust中,默認情況下,所有變量都是不可變的。這增加了代碼的安全性和清晰性。當然,如果需要,你可以通過使用mut關鍵字明確指定可變性。LoJ28資訊網——每日最新資訊28at.com

通過了解和掌握這些概念,你將能夠更有效地編寫Rust代碼,并充分利用Rust提供的安全和性能優勢。LoJ28資訊網——每日最新資訊28at.com

在我們的下一篇文章中,我們將深入探討這些概念,并通過實際示例來展示它們在Rust編程中的應用。我們還將探討Rust的錯誤處理機制和模式匹配,這是Rust提供的另一組強大功能。LoJ28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-77679-0.htmlRust學習筆記:基礎概念介紹

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一個新名詞之CSS高度塌陷

下一篇: 詳解基于SpringBoot的WebSocket應用開發

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久综合给合久久狠狠狠97色69| 夜夜嗨av色综合久久久综合网| 国产精品久久久一区二区| 欧美午夜精彩| 国产伪娘ts一区| 亚洲日本久久| 午夜精品成人在线| 久久一区中文字幕| 欧美日韩国产三区| 国产欧美日韩一区二区三区在线| 狠狠色噜噜狠狠色综合久| 亚洲精品在线三区| 午夜精品免费在线| 欧美成人午夜| 国产精品久久亚洲7777| 在线观看不卡| 亚洲一区二区三区涩| 久久三级视频| 国产精品成人一区二区三区吃奶| 伊人久久男人天堂| 亚洲图片你懂的| 嫩草影视亚洲| 国产酒店精品激情| 日韩视频在线观看免费| 久久久久高清| 欧美性猛交一区二区三区精品| 狠狠色狠狠色综合| 亚洲午夜三级在线| 欧美/亚洲一区| 国产精品一区在线观看你懂的| 最新国产精品拍自在线播放| 欧美一区三区三区高中清蜜桃| 欧美精品一区二区三区久久久竹菊 | 在线观看欧美黄色| 亚洲一级片在线观看| 免费观看日韩av| 国产日韩一区欧美| 中日韩男男gay无套| 美女久久网站| 国产欧美日韩综合| 中文欧美字幕免费| 欧美成人免费全部| 国产主播在线一区| 亚洲一区二区在线免费观看视频 | 欧美日韩国产色视频| 影音先锋日韩有码| 羞羞答答国产精品www一本| 欧美久久婷婷综合色| 伊人蜜桃色噜噜激情综合| 欧美在线免费观看视频| 国产精品久久久久久妇女6080| 亚洲精品在线免费| 欧美成人有码| 1024成人| 久久野战av| 国产一区二区三区高清播放| 午夜精品久久久| 国产精品久久久久av免费| 99这里有精品| 欧美日韩中国免费专区在线看| 亚洲国产裸拍裸体视频在线观看乱了| 欧美制服丝袜| 国产欧美精品日韩| 亚洲欧美国产高清| 国产精品高清免费在线观看| 夜夜嗨av一区二区三区四区| 欧美激情区在线播放| 亚洲国产精品尤物yw在线观看| 久久精品免费观看| 国产午夜一区二区三区| 欧美制服丝袜第一页| 国产欧美日韩视频在线观看| 香蕉av福利精品导航| 国产精品扒开腿做爽爽爽软件| 亚洲最新中文字幕| 欧美日韩精品在线播放| 亚洲免费观看视频| 欧美日韩成人一区二区| 99精品欧美一区二区蜜桃免费| 欧美激情精品久久久六区热门 | 亚洲人成在线观看一区二区| 欧美激情第二页| 亚洲美女视频| 欧美视频不卡中文| 亚洲午夜激情在线| 国产精品免费视频xxxx| 香蕉av777xxx色综合一区| 国产欧美一区二区精品婷婷 | 可以免费看不卡的av网站| 亚洲二区在线视频| 欧美激情精品久久久久久| 日韩一级在线| 欧美丝袜第一区| 性一交一乱一区二区洋洋av| 国产亚洲综合在线| 麻豆91精品91久久久的内涵| 91久久久久久国产精品| 欧美日本一道本| 亚洲一区二区黄| 国产欧美日本在线| 老色鬼久久亚洲一区二区| 亚洲精品极品| 国产精品激情电影| 欧美亚洲一区二区在线| 韩国成人理伦片免费播放| 浪潮色综合久久天堂| 99视频国产精品免费观看| 国产精品久久久久久久9999 | 久久免费视频这里只有精品| 亚洲国产成人tv| 欧美性猛交99久久久久99按摩| 午夜在线精品偷拍| 在线高清一区| 欧美日韩国产片| 性欧美在线看片a免费观看| 在线国产亚洲欧美| 欧美日韩视频一区二区| 欧美与黑人午夜性猛交久久久| 在线观看国产日韩| 欧美日韩亚洲91| 欧美专区在线| 亚洲精品乱码久久久久久黑人 | 国产一区二区三区日韩欧美| 欧美成人小视频| 午夜影院日韩| 亚洲欧洲日韩女同| 国产精品免费视频xxxx| 久久亚洲精品一区二区| 一区二区国产在线观看| 国产一区高清视频| 欧美日韩国产综合网| 久久成人羞羞网站| 夜夜爽99久久国产综合精品女不卡| 国产美女精品视频| 欧美~级网站不卡| 性欧美1819性猛交| 亚洲人成网站影音先锋播放| 国产精品欧美激情| 欧美顶级大胆免费视频| 午夜在线观看免费一区| 亚洲靠逼com| 黄色亚洲网站| 国产精品国产馆在线真实露脸| 玖玖玖国产精品| 亚洲影视在线| 91久久极品少妇xxxxⅹ软件| 国产毛片精品国产一区二区三区| 欧美国产日韩在线观看| 久久精彩视频| 中文在线不卡| 亚洲国产精品免费| 国产女主播一区| 欧美日韩一区二区在线视频| 久久在精品线影院精品国产| 亚洲自拍偷拍色片视频| 91久久在线播放| 国产在线精品一区二区中文| 欧美午夜电影在线| 欧美刺激性大交免费视频| 亚洲欧美制服另类日韩| 9色porny自拍视频一区二区| 影音先锋久久资源网| 国产美女精品视频| 国产精品久久波多野结衣| 欧美国产精品| 久久一区免费| 久久久精品国产免大香伊| 亚洲欧美视频在线观看| 一二三区精品| 亚洲人成7777| 亚洲国产激情| 激情懂色av一区av二区av| 国产麻豆日韩| 国产精品欧美久久| 国产精品久久久久高潮| 欧美日韩在线播放三区| 欧美国产视频在线观看| 麻豆久久久9性大片| 久久精品99| 欧美怡红院视频| 性欧美大战久久久久久久久| 亚洲欧美三级在线| 亚洲一区二区视频在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲精品综合精品自拍| 亚洲欧洲一区二区在线播放| 在线观看欧美激情| 在线观看视频日韩| 伊人久久婷婷| 精东粉嫩av免费一区二区三区| 国产日韩三区| 国产日本精品| 国产日韩欧美a| 国产亚洲欧美日韩日本| 国产视频观看一区| 国产欧美精品在线播放| 国产午夜精品全部视频播放| 国产亚洲欧美中文| 国产亚洲观看| 好看的日韩av电影| 极品少妇一区二区三区| 在线播放日韩欧美| 亚洲国产精品v| 亚洲国产成人久久综合一区|