Course Code: rustli
Duration: 21 hours
Course Outline:

課程介紹:

Rust是一種現代系統級編程語言,以其內存安全性、並發性和性能而聞名。本課程將向學員系統講解Rust的核心語法及重點概念,通過“理論 + 實戰”的方式幫助學員對Rust有深入的理解,最終能熟練使用這門語言開發各種複雜項目。。

學時:

3天,共計21小時(每日含1小時休息)

課程安排:

第一天:

Rust語言基礎

  • Rust語言概述
  • 詞法結構
  • 面向表達式
  • 數據類型
  • 函數與閉包
  • 模式匹配
  • 智能指針
  • 字符與字符串
  • 集合容器
  • 叠代器
  • Rust模塊
  • Cargo包管理器
  • 實際項目的組織結構
  • 定義自己的Crate

Cargo及crates.io

  • 使用發布配置來定制構建
  • 將包發布到crates.io上
  • 編寫有用的文檔注釋
  • 使用pub use來導出合適的公共API
  • 創建crates.io賬戶
  • 爲包添加元數據
  • 發布到crates.io
  • 發布已有包的新版本
  • 使用cargo yank命令從cargo.io上移除版本
  • Cargo工作空間
  • 創建工作空間
  • 使用cargo install從crates.io上安裝可執行程序

Rust語言核心概念

  • Rust語言架構
  • 所有權:內存管理基礎知識
  • 所有權:安全管理之內存安全
  • 所有權:Copy語義和Copy trait
  • 所有權:深入理解Move語義
  • 所有權:Move與析構

深入理解生命周期

  • 完全理解Scope和NLL
  • 深入理解生命周期和生命周期參數
  • 深入理解生命周期參數Early bound
  • 借用檢查:深入理解生命周期參數Tvs&T
  • 深入理解生命周期參數: trait對象的生命周期參數
  • 深入理解生命周期參數:高階生命周期

線程與並發

  • 理解線程與並發
  • 線程間安全共享數據
  • 構建並發系統
  • 無鎖並發

第二天

trait與泛型

  • trait靜態分發
  • 認識trait對象
  • 泛型和trait實現模板方法
  • trait對象本質
  • 對象安全本質
  • 利用Enum代替trait對象
  • trait覆蓋實現的一個解決方案
  • trait對象與Sized
  • trait對象與Box Self
  • 編程範式:Rust語言編程範式

Rust的面向對象編程特性

  • 面向對象語言的特性
  • 對象包含數據和行爲
  • 封裝實現細節
  • 作爲類型系統和代碼共享機制的繼承
  • 使用trait對象來存儲不同類型的值
  • 爲共有行爲定義一個trait
  • 實現trait
  • trait對象會執行動態派發
  • trait對象必須保證對象安全
  • 案例:實現面向對象的設計模式

Rust錯誤處理概要

  • Rust錯誤處理:Option
  • Rust錯誤處理:Result
  • Rust錯誤處理:try
  • Rust錯誤處理:Panic

Rust元編程之反射

  • Rust元編程之反射的兩種應用思路
  • Rust元編程之編譯過程與宏展開概述

Rust元編程之聲明宏

  • 三件套介紹
  • Bang宏實現原理
  • 使用配置文件動態生成代碼
  • Derive宏案例
  • 屬性宏

深入理解Unsafe Rust

  • Unsafe Rust安全抽象概述
  • Unsafe Rust安全抽象:Drop檢查
  • Unsafe Rust安全抽象:型變
  • UnsafeRust的其他知識點

第三天

Rust異步編程基礎

  • Rust異步編程之IO模型
  • epoll和io_uring
  • 事件驅動編程模型
  • epoll代碼實踐
  • Reactor代碼實踐
  • MiniMio代碼實踐
  • Mio代碼實踐
  • 異步編程模型概要
  • Future和Futures-rs介紹
  • 編寫異步echo服務
  • 深入理解異步Task模型
  • Waker實現
  • Futures庫源碼分析
  • async-await語法
  • 生成器
  • Pin與Unpin
  • no-std異步生態介紹
  • 實現異步緩存
  • 異步運行時生態介紹
  • smol運行時
  • async-std運行時
  • tokio運行時

構建異步Web框架

  • Rust異步Web框架概述
  • Rust異步Web框架--Rocket
  • Rust異步Web框架--tide
  • Rust異步Web框架--actix-web
  • Rust異步Web框架--gotham-and-thruster
  • Rust異步Web框架--tower
  • Rust異步Web框架--hyper
  • Rust異步Web框架--warp

Web框架實戰之HTTP庫實戰

  • Web框架實戰之了解hyper-tower_http-http-body之間的層次關系
  • Web框架實戰之創建初始項目
  • Web框架實戰之設計框架接口
  • Web框架實戰之實現路由結構
  • Web 框架實戰之實現 Handler
  • Web 框架實戰之添加 tracing 打印
  • Web 框架實戰之實現提取器
  • Web 框架實戰之實現提取器和中間件
  • Web 框架實戰之錯誤處理支持

編寫自動化測試

  • 如何編寫測試
  • 測試函數的構成
  • 使用assert!宏檢查結果
  • 使用assert_eq!宏和assert_ne!宏判斷相等性
  • 添加自定義的錯誤提示信息
  • 使用should_panic檢查panic
  • 使用Result<T, E>編寫測試
  • 控制測試的運行方式
  • 並行或串行地進行測試
  • 顯示函數輸出
  • 只運行部分特定名稱的測試
  • 通過顯式指定來忽略某些測試
  • 測試的組織結構
  • 單元測試
  • 集成測試