Rust 语言学习笔记..................................... 18 2.3 循环表达式 ................................................................................. 19 2.3.1 for 循环 ............................................... .............................. 19 2.3.2 while 循环 .......................................................................... 19 2.3.3 loop .......................................................... ............................................... 102 7.5.1 控制访问顺序--等待与通知 ................................................... 103 7.5.2 控制访问顺序的机制-原子类型与锁 ........................................ 1040 码力 | 117 页 | 2.24 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.5. 控制流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 6.2. match 控制流结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 6.3. if let 和 let else 简洁控制流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 7.2. 定义模块来控制作用域与私有性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 562 页 | 3.23 MB | 29 天前3
 Rust 程序设计语言简体中文版.......................................................................................... 61 3.5. 控制流 ................................................................................................. ................... 123 6.2. match 控制流结构 ....................................................................................................... 131 6.3. if let 简洁控制流 ................................. .................................................................................... 142 7.2. 定义模块来控制作用域与私有性 .................................................................................. 144 7.3.0 码力 | 600 页 | 12.99 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . 28 6 控制流基础 29 6.1 if 表达式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 6.2 循环控制 . . . . . . . . . . . . . . . . . . . . . . . 12.2 解构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 12.3 let 控制流 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 12.4 练习:表达式求值 . . . 50.2 alloc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 51 微控制器 250 51.1 原始 MMIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 51.20 码力 | 359 页 | 1.33 MB | 10 月前3
 Hello 算法 1.2.0 简体中文 Rust 版1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration.rs === /* for 循环 */ fn for_loop(n: i32) -> i32 { let mut res = 0; // 循环求和 1, 2, ..., n-1, n for i in 1..=n { res += i; } res } 第 2 章 复杂度分析0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.1.0 Rust版1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 迭代(iteration)是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某段 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration.rs === /* for 循环 */ fn for_loop(n: i32) -> i32 { let mut res = 0; // 循环求和 1, 2, ..., n-1, n for i in 1..=n { res += i; } res } 图 2‑1 是该求和函数的流程框图。0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.0.0 Rust版1. 将扑克牌划分为“有序”和“无序”两部分,并假设初始状态下最左 1 张扑克牌已经有序。 2. 在无序部分抽出一张扑克牌,插入至有序部分的正确位置;完成后最左 2 张扑克已经有序。 3. 不断循环步骤 2. ,每一轮将一张扑克牌从无序部分插入至有序部分,直至所有扑克牌都有序。 图 1‑2 扑克排序步骤 上述整理扑克牌的方法本质上是“插入排序”算法,它在处理小型数据集时非常高效。许多编程语言的排序 度之前,我们先来了解如何在程序中实现重复执行任务,即两种基本的程序控制结构:迭代、递归。 2.2.1 迭代 「迭代 iteration」是一种重复执行某个任务的控制结构。在迭代中,程序会在满足一定的条件下重复执行某 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File: iteration.rs === /* for 循环 */ fn for_loop(n: i32) -> i32 { let mut res = 0; // 循环求和 1, 2, ..., n-1, n for i in 1..=n { res += i; } res } 第 2 章 复杂度分析0 码力 | 383 页 | 17.61 MB | 1 年前3
 Rust 是否需要另⼀种“⾊彩”的 Future? - 郭⼦兴Future 以实现⾮阻塞 的 IO 或并发控制语义。异步执⾏器被允许在任意时刻删除⽣成的 Future 实例以取消正在执⾏的异步操作,但取消 总是⽆副作⽤的吗?Rust 是否需要另⼀种“颜⾊”的 Future 为有副作⽤取消的异步⾏为提供安全保证? 回顾如何使⽤ Future ⽀持基于 poll 的 IO,以及基于取消 Future 的流程控制 # 基于 Poll 的 Future io-uring () = t2 �� println!("task two completed first"), } } Select: 基于取消的并发控制语义 select! 是常⻅的并发控制语义,它的语义当 其中⼀个分⽀完成时即返回,⽽不必等待所有 Future 实例完成。 async fn listen(listener: TcpListener) { ("time out"), } } } 取消不再是⽆副作⽤的 取消基于完成的 IO 事件不再是⽆副作⽤的, 基于⽆副作⽤取消的控制流程可能会引发致命 错误。 1. 获取连结; 2. 进⼊接收循环; 3. 链接读取超时,进⼊超时分⽀; 4. 接收事件完成; 5. 离开超时分⽀; 6. 析构 t1, t2 Future; Stream::merge0 码力 | 19 页 | 7.77 MB | 1 年前3
 Hello 算法 1.2.0 繁体中文 Rust 版在演算法中,重複執行某個任務是很常見的,它與複雜度分析息息相關。因此,在介紹時間複雜度和空間複 雜度之前,我們先來了解如何在程式中實現重複執行任務,即兩種基本的程式控制結構:迭代、遞迴。 2.2.1 迭代 迭代(iteration)是一種重複執行某個任務的控制結構。在迭代中,程式會在滿足一定的條件下重複執行某段 程式碼,直到這個條件不再滿足。 1. for 迴圈 for 迴圈是最常見的迭代形式之一,適合在預先知道迭代次數時使用。 度的思路稱為“以空間換時間”;反之,則稱為“以時間換空間”。 選擇哪種思路取決於我們更看重哪個方面。在大多數情況下,時間比空間更寶貴,因此“以空間換時間”通 常是更常用的策略。當然,在資料量很大的情況下,控制空間複雜度也非常重要。 2.5 小結 1. 重點回顧 演算法效率評估 ‧ 時間效率和空間效率是衡量演算法優劣的兩個主要評價指標。 ‧ 我們可以透過實際測試來評估演算法效率,但難以消除測試環境的影響,且會耗費大量計算資源。 標準資訊交換程式碼)。它使用 7 位二進位制數(一個位元組的低 7 位)表示一個字元,最多能夠表示 128 個 不同的字元。如圖 3‑6 所示,ASCII 碼包括英文字母的大小寫、數字 0 ~ 9、一些標點符號,以及一些控制字 元(如換行符和製表符)。 圖 3‑6 ASCII 碼 然而,ASCII 碼僅能夠表示英文。隨著計算機的全球化,誕生了一種能夠表示更多語言的 EASCII 字符集。它 在 ASCII 的 70 码力 | 388 页 | 18.82 MB | 10 月前3
 Rust算法教程 The Algos (algorithms)<= 1 { return; } let size = arr.len(); for i in 0..(size - 1) { // 标记当前循环是否发⽣元素交换 let mut swapped = false; // 最后i个元素已经排好了顺序 for j in 1..(size - i) { arr.swap(j - 1, j); swapped = true; } } // 如果当前循环没有发⽣元素交换,说明数组已经有序 if !swapped { break; } } } #[cfg(test)] mod tests len(); // 构建⼤根堆 for i in (0..size / 2).rev() { heapify(arr, i, size); } // 每轮循环将堆顶元素(也就是最⼤元素)放到最后 for i in (1..size).rev() { arr.swap(0, i); // 恢复⼤根堆 heapify(arr0 码力 | 270 页 | 8.46 MB | 1 年前3
共 26 条
- 1
 - 2
 - 3
 













