rust學習疑惑

2022-09-23 09:57:01 字數 1771 閱讀 3074

1.位元組字面量是什麼?

2.陣列元素預設不可變?

3.vec!巨集是幹嘛的 用來定義向量的

4.靜態生命週期 是什麼?

5.unsafe塊

6.位元組序列轉切片然後再轉str是在幹嘛

7.panic巨集

8.單元結構體

9.帶引數列舉體

10.智慧指標的好處

11.trait到底是個啥?啥是debug trait

rust主要由以下幾個核心部件構成:

rust語言規範主要由rust語言參考和rfc文件共同構成

rust語言參考

包含三部分內容

可以通過在模組頂部插入#![no_std]來使用核心庫。核心庫和標準庫功能有一些重複,包含以下部分:

標準庫包含的內容大概如下:

rust語法可以分成兩大類:語句和表示式

語句又分為兩種:宣告語句和表示式語句

rust編譯器在解析**的時候,如果碰到分號,就會繼續往後面執行;如果碰到語句則執行語句;如果碰到表示式,就會對表示式求值,如果分號後面什麼都沒有就會不上單元值()。

當遇到函式時,會將函式的花括號識別為表示式。塊表示式是由一對花括號和一系列表示式組成的,它總是返回塊中最後一個表示式的值。

位置表示式就是表達記憶體位置的表示式,即左值,分別有以下幾類:

求值上下文分為位置上下文和值上下文。下面幾種表示式屬於位置上下文:

1.to_string 沒有出現書上說的“other value used here after move"

在語義上,每個變數繫結實際上都擁有該儲存單元的所有權,這種轉移記憶體地址的行為就是所有權的轉移,在rust中稱為移動語義,那種不轉移的情況實際上是一種複製語義

2.**清單2-6中的b,實際**中並沒有列印地址,而是列印了陣列

閉包有以下幾個特點:

warning:...range patterns are deprecated

--> src/main.rs:5:10

|5 | 1...3 => println!("all"),

| ^^^ help: use..=for an inclusive range

|= note:#[warn(ellipsis_inclusive_range_patterns)]on by default

warning: 1 warning emitted

可以通過as操作符將布林型別轉換為數字0和1,但是不支援數字轉換為布林型別

在rust中,使用單引號來定義字元型別。字元型別代表的是一個unicode標量值,每個字元佔4個位元組。

可以使用as操作符將字元轉為數字型別。

陣列的特點是:

在底層代表一個指向陣列起始位置的指標和陣列長度。

切片提供了兩個const 方法 len 和is_empty ,分別用來得到切片的長度和判斷切片是否為空

rust提供了原始的字串型別str,也叫做字串切片。它通常以不可變借用的形式存在,即&str。出於記憶體安全的考慮,rust將字串分為兩種型別,一種是固定長度字串,不可隨便更改其長度,就是str字串;另一種是可增長字串,可以隨意改變其長度,就是string字串。

本質上字串字面量也屬於str型別,只不過它是靜態生命週期字串&'static str。

str字串型別由兩部分組成:指向字串序列的指標和記錄長度的值。可以通過str模組提供的as_ptr和len方法分別求得指標和長度。

never 型別用於表示永遠不可能有返回值的計算型別

初始rust

訪問rust 按照步驟操作即可,安裝很慢,請耐心等待 成功之後可以使用文字編輯器進行第一個 測試,也可以勇vs code,個人比較推薦,請在...

jenkins疑惑

本地倉庫,指令碼 os getcwd 獲取當前指令碼目錄 正常 把指令碼放到了工作區,os getcwd 獲取的卻是 專案的主目錄 打算 思...

rust 入門

hello rust fn main 從hello world入手,rust的語法是比較簡潔。 在mac os中,我們習慣使用docker來...