Rust程序設計(高級篇)

[加]鄭宇、黃立群、[加]沈剛、黃曉濤、全麗莉

  • 出版商: 清華大學
  • 出版日期: 2026-04-01
  • 售價: $594
  • 語言: 簡體中文
  • ISBN: 7302713618
  • ISBN-13: 9787302713616
  • 相關分類: Rust 語言
  • 下單後立即進貨 (約4週~6週)

  • Rust程序設計(高級篇)-preview-1
  • Rust程序設計(高級篇)-preview-2
  • Rust程序設計(高級篇)-preview-3
Rust程序設計(高級篇)-preview-1

商品描述

"本書是Rust程序設計系列的第二本,對於真正學習Rust編程語言的讀者來說,本書也是最重要的部分。本書涵蓋所有Rust編程語言的高級特性,包括屬性(Attribute)、泛型(Generic)、引用(Reference)、指針(Pointer)、所有權機制(Ownership)、生命周期(Lifecycle)、閉包(Closure)、疊代器(iterator)、Crate和mod、Trait和Trait對象,線程編程(Thread)、異步編程(Async/Await)、宏(Macro)等。對於每個核心概念、組件和機制,書中都使用具體的例子進行了具體而微的講解。 本書的另一個重要原則是邊學習、邊實踐。在每章的學習中,本書引入豐富的例子講解Rust語言的基本要點。同時在本書的最後,筆者還編寫了專門的總結篇,說明如何利用已學知識編寫簡單實用的Rust小程序,綜合演示Rust各語言要件的使用方法。 本書配套的教學資源包括PPT、樣例代碼、視頻以及外部資源鏈接,可供讀者進一步學習使用。 "

目錄大綱

 

 

 

目錄

 

 

 

 

第1章Rust的高級特性

 

1.1屬性

 

1.1.1Trait的派生屬性

 

1.1.2條件編譯

 

1.1.3crate特征

 

1.1.4配置相關屬性

 

1.1.5其他常用的屬性

 

1.2泛型

 

1.2.1泛型函數

 

1.2.2泛型結構

 

1.2.3泛型數組和向量

 

1.2.4泛型枚舉

 

1.2.5泛型impl塊

 

1.2.6靜態分發

 

1.3通用集合類型

 

1.3.1向量

 

1.3.2雙端隊列

 

1.3.3鏈表

 

1.3.4二叉堆

 

1.3.5映射

 

1.3.6集合

 

1.3.7Hashing

 

1.4引用

 

1.4.1引用聲明

 

1.4.2引用的解引用

 

1.4.3引用規則

 

1.4.4多重引用

 

1.4.5引用比較

 

1.4.6切片和trait對象的引用

 

1.4.7引用的用法

 

1.5指針類型

 

1.5.1指針類型的大小

 

1.5.2原始指針

 

1.5.3BoxT

 

1.5.4析構函數

 

1.5.5引用計數類型

 

1.5.6內部可變性

 

1.5.7Cell和RefCell

 

1.5.8Box/Rc/Arc指針之間的轉換

 

1.5.9編寫自己的智能指針

 

1.5.10UnsafeCell

 

1.6類型轉換

 

1.6.1強制轉換

 

1.6.2transmute

 

1.7高級類型

 

1.7.1函數類型

 

1.7.2Unsized類型和?Sized

 

1.7.3發散函數和never類型

 

1.7.4聯合

 

1.7.5newtype模式

 

1.7.6類型別名

 

1.7.7資源獲取即初始化

 

1.8庫

 

1.9其他

 

1.9.1編譯時讀取文件

 

1.9.2虛位類型參量

 

1.9.3Any和反射

 

1.9.4內聯匯編

 

第2章所有權和借用

 

2.1所有權

 

2.2所有權示例

 

2.2.1String變量所有權

 

2.2.2向量所有權

 

2.2.3BoxT類型所有權

 

2.2.4結構所有權

 

2.3共享、復制和移動語義

 

2.4所有權規則

 

2.5借用檢查

 

2.6所有權轉移

 

2.6.1賦值

 

2.6.2通過函數參數給函數

 

2.6.3函數返回值的方式

 

2.6.4控制流裏的所有權轉移

 

2.6.5集合類型索引元素時的所有權轉移

 

2.6.6所有權轉移的特殊情況

 

2.7解決所有權引發的問題

 

2.7.1復制值

 

2.7.2借用

 

2.7.3共享語義

 

2.7.4減少使用長生命周期的變量

 

2.8總結

 

第3章生命周期

 

3.1作用域和生命周期

 

3.2生命周期聲明

 

3.2.1函數簽名

 

3.2.2結構

 

3.2.3impl塊

 

3.2.4高階生命周期

 

3.2.5枚舉

 

3.2.6閉包

 

3.2.7trait限定中的生命周期

 

3.2.8生命周期強制轉換

 

3.3生命周期省略

 

3.4引用的生命周期

 

3.4.1借用本地變量

 

3.4.2使用引用類型的函數參數

 

3.4.3使用引用作為函數參數的函數

 

3.4.4方法

 

3.4.5返回引用

 

3.4.6函數包含多個生命周期

 

3.5static

 

3.6生命周期子類型

 

3.7NLL

 

3.8Variance(型變)

 

3.9其他

 

第4章閉包

 

4.1為什麼需要使用閉包

 

4.2閉包聲明和使用

 

4.3閉包使用外部環境變量

 

4.4閉包實現

 

4.4.1Fn

 

4.4.2FnMut

 

4.4.3FnOnce

 

4.5閉包作為變量

 

4.6閉包作為函數輸入參數

 

4.7閉包作為函數返回值

 

4.8函數和閉包的區別

 

4.9閉包用法

 

第5章疊代子

 

5.1Iterator和IntoIterator traits

 

5.2典型疊代子的3種用法

 

5.2.1創建疊代子

 

5.2.2疊代子適配器

 

5.2.3消費疊代子

 

5.3常見的疊代子使用例

 

5.3.1字符串

 

5.3.2for循環

 

5.3.3疊代子的惰性

 

5.4為用戶自定義的類型實現疊代子

 

5.5第三方疊代庫

 

第6章crate和mod

 

6.1crate

 

6.1.1crate生成

 

6.1.2加載外部crate

 

6.1.3Prelude模塊

 

6.2mod

 

6.2.1內部模塊

 

6.2.2按文件組織的模塊

 

6.2.3按目錄組織的模塊

 

6.2.4多層嵌套模塊

 

6.2.5使用模塊

 

6.3訪問模塊內容

 

6.3.1訪問路徑

 

6.3.2可見性

 

6.4常用的第三方crate

 

6.4.1ansi_term

 

6.4.2datetime

 

6.4.3git2

 

6.4.4glob

 

6.4.5lazy_static

 

6.4.6libc

 

6.4.7locale

 

6.4.8log

 

6.4.9natord

 

6.4.10num_cpus

 

6.4.11number_prefix

 

6.4.12bitflag

 

6.4.13byteorder

 

6.4.14matches

 

6.4.15Pad

 

6.4.16scoped_threadpool

 

6.4.17term_grid

 

6.4.18term_size

 

6.4.19tinyvec

 

6.4.20unicodewidth

 

6.4.21url

 

6.4.22users

 

6.4.23zoneinfo_compiled

 

6.5總結

 

第7章trait和trait對象

 

7.1trait

 

7.1.1trait定義

 

7.1.2trait基本原則

 

7.1.3trait與內置類型

 

7.1.4trait的默認方法

 

7.1.5小結

 

7.2關聯常量

 

7.3關聯類型

 

7.3.1關聯類型聲明

 

7.3.2可讀性可擴展性

 

7.3.3何時使用關聯類型

 

7.3.4泛型關聯類型

 

7.4self和Self

 

7.5簡單traits

 

7.6繼承traits

 

7.7標記traits

 

7.8trait對象

 

7.8.1impl trait和dyn trait

 

7.8.2對象安全

 

7.8.3通用調用語法

 

7.8.4動態分發

 

7.8.5使用trait作為輸入/輸出參數

 

7.8.6返回trait

 

7.8.7錯誤處理例子

 

7.9泛型trait

 

7.9.1泛型的trait約束

 

7.9.2多trait約束

 

7.9.3where關鍵字

 

7.9.4用impl trait語法實現trait約束

 

7.9.5impl代碼塊的trait約束

 

7.10標準trait介紹

 

7.10.1派生

 

7.10.2Default

 

7.10.3Sized和?Sized

 

7.10.4AsRef和AsMut

 

7.10.5Borrow和BorrowMut

 

7.10.6ToOwned

 

7.10.7From和Into

 

7.10.8TryFrom和TryInto

 

7.10.9ToString和 Display&FromStr trait

 

7.10.10Deref和DerefMut

 

7.10.11Cow

 

第8章線程並發

 

8.1線程

 

8.1.1通過spawn函數創建

 

8.1.2定制化創建線程

 

8.1.3Scoped線程

 

8.2線程數據訪問

 

8.2.1statics

 

8.2.2leaking

 

8.2.3move

 

8.2.4Arc

 

8.3消息傳遞通道

 

8.3.1異步通道

 

8.3.2同步通道

 

8.4共享狀態

 

8.4.1互斥鎖

 

8.4.2讀寫鎖

 

8.4.3線程Park

 

8.4.4條件變量

 

8.4.5屏障類型

 

8.4.6原子類型

 

8.4.7線程本地存儲

 

8.5線程安全

 

8.5.1Send trait

 

8.5.2Sync trait

 

8.5.3總結

 

8.6並發

 

8.6.1多進程

 

8.6.2多線程

 

8.6.3異步

 

8.6.4向量化

 

8.6.5線程池

 

8.7其他第三方crate

 

第9章異步編程

 

9.1Future

 

9.1.1Future的分類

 

9.1.2Future的接口

 

9.1.3Future的執行

 

9.2異步編程通用模型——輪詢

 

9.2.1主流的並發模型

 

9.2.2Rust的異步模型

 

9.2.3總結

 

9.3生成器

 

9.3.1生成器的定義

 

9.3.2轉化Generator為Future

 

9.4async/await語法

 

9.4.1async fn函數

 

9.4.2async{}代碼塊

 

9.4.3await

 

9.5async/await的實現機制

 

9.6Pin

 

9.6.1自引用結構體的move

 

9.6.2Pin

 

9.6.3Unpin

 

9.6.4Pin總結

 

9.7Tokio

 

9.7.1非阻塞式I/O

 

9.7.2阻塞式I/O

 

9.8同時運行多個Future

 

9.8.1join!

 

9.8.2try_join!

 

9.8.3Select!

 

9.9從同步程序調用異步程序

 

9.10異步程序測試

 

9.10.1使用選用的異步框架支持的測試方法

 

9.10.2使用測試用運行時

 

9.11總結

 

第10章Rust函數式編程

 

10.1函數式編程簡介

 

10.2參數化類型

 

10.3閉包和函數

 

10.4語句

 

10.5鏈式調用

 

10.6高階函數

 

10.7面向對象

 

10.7.1算符重載

 

10.7.2多繼承

 

10.7.3多態

 

10.7.4重載

 

10.7.5靜態分派和動態分派

 

10.7.6方法和函數

 

10.7.7構造函數

 

10.7.8builder模式

 

10.7.9Visitor模式

 

10.8設計模式

 

10.8.1functor模式

 

10.8.2monad模式

 

10.8.3combinator模式

 

10.8.4延遲求值模式

 

10.9並發

 

第11章進階篇總結

 

11.1數據結構

 

11.1.1鏈表

 

11.1.2樹

 

11.1.3圖

 

11.2定時器

 

11.3數據爬蟲

 

11.3.1需求分析

 

11.3.2技術分析

 

11.3.3功能實現

 

11.3.4編譯運行

 

11.4Web應用編程

 

11.4.1Cargo設置

 

11.4.2main程序

 

11.4.3日誌配置

 

11.4.4錯誤處理

 

11.5數據庫應用編程

 

11.5.1用SQL語句操作Postgres/MySQL

 

11.5.2MongoDB

 

11.5.3連接池——r2d2

 

11.5.4Redis

 

11.5.5ORM庫

 

11.6以太坊智能合約應用編程

 

11.6.1鏈接節點

 

11.6.2塊信息

 

11.6.3基本的交易信息

 

11.6.4Wei到Eth的轉換函數

 

11.6.5與合約交互

 

11.7自定義鎖

 

11.7.1基本的最小化版本

 

11.7.2不安全的SpinLock

 

11.7.3提供安全的接口

 

11.8總結

 

第12章宏

 

12.1使用宏的時機

 

12.2內置宏

 

12.3宏的編譯過程

 

12.4聲明宏編程簡介

 

12.4.1衛生性

 

12.4.2宏聲明

 

12.4.3模式匹配與變量捕捉

 

12.4.4宏選擇器關鍵字

 

12.4.5宏工作機制

 

12.4.6重復構造

 

12.4.7宏的復雜用法

 

12.4.8宏的導入和導出

 

12.4.9聲明宏的錯誤處理

 

12.5高級宏例子

 

12.5.1println!宏

 

12.5.2宏生成運行測試案例

 

12.5.3實現Ruby的HashMap語法

 

12.5.4組合函數的宏

 

12.5.5宏重載

 

12.5.6批量轉換

 

12.6過程宏編程簡介

 

12.6.1用戶定義的派生宏

 

12.6.2屬性宏

 

12.6.3類函數宏

 

12.7全面聲明宏和過程宏的例子

 

12.7.1聲明宏的實現

 

12.7.2屬性宏實現

 

12.7.3類函數宏實現

 

12.7.4派生宏實現

 

12.7.5綜合使用例

 

12.8調試宏

 

12.9宏編程可能引發的問題

 

12.10必備宏crate

 

附錄詞匯表

 

參考文獻