Comprehensive Rust(简体中文) 202412了解这些信息后,请按照以下步骤从本培训中的一个示例中构建 Rust 二进制文件: 1. 在你要复制的示例上点击“复制到剪贴板(Copy to clipboard)”按钮。 2. 使用 cargo new exercise 为代码新建一个 exercise/ 目录: $ cargo new exercise Created binary (application) `exercise` package 3. 转到 exercise/ 清零,然后设置堆栈指针。 – BSS(由于历史原因,称为代码块起始符)属于对象文件的一部分,其中包含静态分配的变量, 这些变量被初始化为零。图像中省略了这些符号,以避免因存储零值而占用过多空间。编译器 假定加载器会负责将它们清零。 • BSS 可能已经被清零,具体取决于内存的初始化方式以及图像的加载方式,但为了确保起见,我们 会将其手动清零。 265 • 我们需要先启用 MMU 和缓存功能,然后才能读取或写入任何内存。否则:0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 程序设计语言简体中文版"%USERPROFILE%\projects" > cd /d "%USERPROFILE%\projects" > mkdir hello_world > cd hello_world 编写并运行 Rust 程序 接下来,新建一个源文件,命名为 main.rs。Rust 源文件总是以 .rs 扩展名结尾。如果文件名 包含多个单词,那么按照命名习惯,应当使用下划线来分隔单词。例如命名为 hello_world.rs, 而不是 项目有什么不同。回到 projects 目录(或者你存放代码的目录)。接着,可在任何操作系统下运行以下命令: $ cargo new hello_cargo $ cd hello_cargo 第一行命令新建了名为 hello_cargo 的目录和项目。我们将项目命名为 hello_cargo,同时 Cargo 在一个同名目录中创建项目文件。 进入 hello_cargo 目录并列出文件。将会看到 Cargo 之间的随机整数。接着它会请玩家猜一个数并输入,然后提示猜测是大了还是小了。 如果猜对了,它会打印祝贺信息并退出。 准备一个新项目 要创建一个新项目,进入第一章中创建的 projects 目录,使用 Cargo 新建一个项目,如下: $ cargo new guessing_game $ cd guessing_game 第一个命令,cargo new ,它获取项目的名称(guessing_game )作为第一个参数。第二个命0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0"%USERPROFILE%\projects" > cd /d "%USERPROFILE%\projects" > mkdir hello_world > cd hello_world 编写并运行 Rust 程序 接下来,新建一个源文件,命名为 main.rs。Rust 源文件总是以 .rs 扩展名结尾。如果文件名 包含多个单词,那么按照命名习惯,应当使用下划线来分隔单词。例如命名为 hello_world.rs, 而不是 项目有什么不同。回到 projects 目录(或者你存放代码的目录)。接着,可在任何操作系统下运行以下命令: $ cargo new hello_cargo $ cd hello_cargo 第一行命令新建了名为 hello_cargo 的目录和项目。我们将项目命名为 hello_cargo,同时 Cargo 在一个同名目录中创建项目文件。 进入 hello_cargo 目录并列出文件。将会看到 Cargo 之间的随机整数。然后提示玩家输入一个猜测值。输入后,程序会指示该猜测是太低还是 太高。如果猜对了,游戏会打印祝贺信息并退出。 准备一个新项目 要创建一个新项目,进入第一章中创建的 projects 目录,使用 Cargo 新建一个项目,如下: $ cargo new guessing_game $ cd guessing_game 第一个命令,cargo new,它获取项目的名称(guessing_game)作为第一个参数。第二个命令0 码力 | 562 页 | 3.23 MB | 24 天前3
Rust 语言学习笔记pub,那么就它 变成对外可见(访问,调用)的了。 1.2.2 引用外部文件模块 通常,我们会在单独的文件中写模块内容,然后使用 mod 关键字来加载那个 文件作为我们的模块。 比如,我们在 src 下新建了文件 aaa.rs。现在目录结构是下面这样子: foo ├── Cargo.toml └── src └── aaa.rs └── main.rs 我们在 aaa.rs from the spawned thread! hi number 5 from the spawned thread! 由于主线程结束,上面例子中的代码大部分时候不光会提早结束新建线程,甚 至不能实际保证新建线程会被执行。其原因在于无法保证线程运行的顺序! 7.1.3 使用 join 等待所有线程结束 use std::thread; use std::time::Duration; thread! 这两个线程仍然会交替执行,不过主线程会由于 handle.join() 调用会等待 直到新建线程执行完毕。 7.1.4 线程与 move 闭包 thread::spawn 的闭包并没有任何参数:并没有在新建线程代码中使用任何主 线程的数据。为了在新建线程中使用来自于主线程的数据,需要新建线程的闭 包获取它需要的值。 use std::thread; fn main() {0 码力 | 117 页 | 2.24 MB | 1 年前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验恢复构建包可⽤于优化构建和导出阶段的⽂件。 查找⼀组有序的构建包以在构建阶段使⽤。 恢复 构建 从缓存中恢复图层。 将应⽤程序源代码转换为可以打包到容器中的可运⾏⼯件。 导出 创建最终的 OCI 图像。 Packages and Crates cli desktop common client apiserver controllers resources schema scm config0 码力 | 34 页 | 10.81 MB | 1 年前3
Rust语言核心竞争力-庄晓立OS) • 对运算性能的高要求 • 对系统安全和内存安全的强需求 重点项目&热门领域 • 大数据 • 云计算 • 物联网 • 航空航天 • 超级计算机 • 科学运算/机器学习 • 图形图像处理 • 虚拟现实 ……都有系统编程的身影 • 操作系统 • 虚拟机/容器 • 数据库 • 3D游戏引擎 • 网络服务器 • 浏览器引擎 • 编译器、解释器 • 三维建模/动画/渲染 数据中心0 码力 | 51 页 | 1.09 MB | 1 年前3
Hello 算法 1.1.0 Rust版None } 7. 扩容数组 在复杂的系统环境中,程序难以保证数组之后的内存空间是可用的,从而无法安全地扩展数组容量。因此在 大多数编程语言中,数组的长度是不可变的。 如果我们希望扩容数组,则需重新建立一个更大的数组,然后把原数组元素依次复制到新数组。这是一个 ?(?) 的操作,在数组很大的情况下非常耗时。代码如下所示: // === File: array.rs === /* 扩展数组长度 self.size -= 1; // 返回被删除的元素 return num; } /* 列表扩容 */ pub fn extend_capacity(&mut self) { // 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组复制到新数组 let new_capacity = self.capacity * self.extend_ratio; 第 4 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create pull request”按钮即可发起拉取请求。 图 16‑3 页面编辑按键 图片无法直接修改,需要通过新建 Issue 或评论留言来描述问题,我们会尽快重新绘制并替换图片。 2. 内容创作 如果您有兴趣参与此开源项目,包括将代码翻译成其他编程语言、扩展文章内容等,那么需要实施以下 Pull Request0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版None } 7. 扩容数组 在复杂的系统环境中,程序难以保证数组之后的内存空间是可用的,从而无法安全地扩展数组容量。因此在 大多数编程语言中,数组的长度是不可变的。 如果我们希望扩容数组,则需重新建立一个更大的数组,然后把原数组元素依次复制到新数组。这是一个 ?(?) 的操作,在数组很大的情况下非常耗时。代码如下所示: // === File: array.rs === /* 扩展数组长度 self.size -= 1; // 返回被删除的元素 return num; } /* 列表扩容 */ pub fn extend_capacity(&mut self) { // 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组复制到新数组 let new_capacity = self.capacity * self.extend_ratio; 第 4 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create pull request”按钮即可发起拉取请求。 图 16‑3 页面编辑按键 图片无法直接修改,需要通过新建 Issue 或评论留言来描述问题,我们会尽快重新绘制并替换图片。 第 16 章 附录 www.hello‑algo.com 375 2. 内容创作 如果您有兴趣参与此开源项目,包括将代码翻译0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版None } 7. 扩容数组 在复杂的系统环境中,程序难以保证数组之后的内存空间是可用的,从而无法安全地扩展数组容量。因此在 大多数编程语言中,数组的长度是不可变的。 如果我们希望扩容数组,则需重新建立一个更大的数组,然后把原数组元素依次复制到新数组。这是一个 ?(?) 的操作,在数组很大的情况下非常耗时。代码如下所示: // === File: array.rs === /* 扩展数组长度 self.size -= 1; // 返回被删除的元素 return num; } /* 列表扩容 */ pub fn extend_capacity(&mut self) { // 新建一个长度为原数组 extend_ratio 倍的新数组,并将原数组复制到新数组 let new_capacity = self.capacity * self.extend_ratio; self 在页面底部填写修改说明,然后点击“Propose file change”按钮。页面跳转后,点击“Create pull request”按钮即可发起拉取请求。 图 16‑3 页面编辑按键 图片无法直接修改,需要通过新建 Issue 或评论留言来描述问题,我们会尽快重新绘制并替换图片。 2. 内容创作 如果您有兴趣参与此开源项目,包括将代码翻译成其他编程语言、扩展文章内容等,那么需要实施以下 Pull Request0 码力 | 383 页 | 17.61 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版} 7. 擴容陣列 在複雜的系統環境中,程式難以保證陣列之後的記憶體空間是可用的,從而無法安全地擴展陣列容量。因此 在大多數程式語言中,陣列的長度是不可變的。 如果我們希望擴容陣列,則需重新建立一個更大的陣列,然後把原陣列元素依次複製到新陣列。這是一個 ?(?) 的操作,在陣列很大的情況下非常耗時。程式碼如下所示: // === File: array.rs === /* 擴展陣列長度 self.size -= 1; // 返回被刪除的元素 return num; } /* 串列擴容 */ pub fn extend_capacity(&mut self) { // 新建一個長度為原陣列 extend_ratio 倍的新陣列,並將原陣列複製到新陣列 let new_capacity = self.capacity * self.extend_ratio; 第 4 在頁面底部填寫修改說明,然後點選“Propose file change”按鈕。頁面跳轉後,點選“Create pull request”按鈕即可發起拉取請求。 圖 16‑3 頁面編輯按鍵 圖片無法直接修改,需要透過新建 Issue 或評論留言來描述問題,我們會盡快重新繪製並替換圖片。 第 16 章 附錄 www.hello‑algo.com 376 2. 內容創作 如果您有興趣參與此開源專案,包括將程式碼翻0 码力 | 388 页 | 18.82 MB | 10 月前3
共 12 条
- 1
- 2













