 Comprehensive Rust(繁体中文)call the first four course days Rust Fundamentals. 在此基礎上,我們將誠摯邀請您深入探討一或多個專題: • Android:這是半天的課程,會說明如何針對 Android 平台開發作業 (Android 開放原始碼計畫) 使用 Rust,並介紹與 C、C++ 和 Java 的互通性。 • Chromium: a half-day course interoperability with C++ and how to include third-party crates in Chromium. • Bare-metal:這是半天的課程,會說明如何使用 Rust 在 bare-metal (嵌入式系統) 上台開發。課程 內容包含微控制器和處理器。 • 並行:這個全天課程著重於 Rust 中的並行問題。我們將探討傳統並行 (使用執行緒和互斥鎖進行先 這是「演講者備忘稿」的範例。我們會透過這些備忘稿補充投影片中未提到的資訊。這可能包括老師應提及 的重點,以及課堂上典型問題的解答。 11 第 1 部分 講授課程 本頁面的適用對象為課程講師。 以下提供一些背景資訊,說明 Google 內部近期採用的授課方式。 We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break in0 码力 | 358 页 | 1.41 MB | 10 月前3 Comprehensive Rust(繁体中文)call the first four course days Rust Fundamentals. 在此基礎上,我們將誠摯邀請您深入探討一或多個專題: • Android:這是半天的課程,會說明如何針對 Android 平台開發作業 (Android 開放原始碼計畫) 使用 Rust,並介紹與 C、C++ 和 Java 的互通性。 • Chromium: a half-day course interoperability with C++ and how to include third-party crates in Chromium. • Bare-metal:這是半天的課程,會說明如何使用 Rust 在 bare-metal (嵌入式系統) 上台開發。課程 內容包含微控制器和處理器。 • 並行:這個全天課程著重於 Rust 中的並行問題。我們將探討傳統並行 (使用執行緒和互斥鎖進行先 這是「演講者備忘稿」的範例。我們會透過這些備忘稿補充投影片中未提到的資訊。這可能包括老師應提及 的重點,以及課堂上典型問題的解答。 11 第 1 部分 講授課程 本頁面的適用對象為課程講師。 以下提供一些背景資訊,說明 Google 內部近期採用的授課方式。 We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break in0 码力 | 358 页 | 1.41 MB | 10 月前3
 Comprehensive Rust(繁体中文) 202406call the first four course days Rust Fundamentals. 在此基礎上,我們將誠摯邀請您深入探討一或多個專題: • Android:這是半天的課程,會說明如何針對 Android 平台開發作業 (Android 開放原始碼計畫) 使用 Rust,並介紹與 C、C++ 和 Java 的互通性。 • Chromium: a half-day course interoperability with C++ and how to include third-party crates in Chromium. • Bare-metal:這是半天的課程,會說明如何使用 Rust 在 bare-metal (嵌入式系統) 上台開發。課程 內容包含微控制器和處理器。 • 並行:這個全天課程著重於 Rust 中的並行問題。我們將探討傳統並行 (使用執行緒和互斥鎖進行先 這是「演講者備忘稿」的範例。我們會透過這些備忘稿補充投影片中未提到的資訊。這可能包括老師應提及 的重點,以及課堂上典型問題的解答。 11 第 1 部分 講授課程 本頁面的適用對象為課程講師。 以下提供一些背景資訊,說明 Google 內部近期採用的授課方式。 We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break in0 码力 | 356 页 | 1.41 MB | 1 年前3 Comprehensive Rust(繁体中文) 202406call the first four course days Rust Fundamentals. 在此基礎上,我們將誠摯邀請您深入探討一或多個專題: • Android:這是半天的課程,會說明如何針對 Android 平台開發作業 (Android 開放原始碼計畫) 使用 Rust,並介紹與 C、C++ 和 Java 的互通性。 • Chromium: a half-day course interoperability with C++ and how to include third-party crates in Chromium. • Bare-metal:這是半天的課程,會說明如何使用 Rust 在 bare-metal (嵌入式系統) 上台開發。課程 內容包含微控制器和處理器。 • 並行:這個全天課程著重於 Rust 中的並行問題。我們將探討傳統並行 (使用執行緒和互斥鎖進行先 這是「演講者備忘稿」的範例。我們會透過這些備忘稿補充投影片中未提到的資訊。這可能包括老師應提及 的重點,以及課堂上典型問題的解答。 11 第 1 部分 講授課程 本頁面的適用對象為課程講師。 以下提供一些背景資訊,說明 Google 內部近期採用的授課方式。 We typically run classes from 9:00 am to 4:00 pm, with a 1 hour lunch break in0 码力 | 356 页 | 1.41 MB | 1 年前3
 Comprehensive Rust(日语) 202412認し、手動で実行した際に正常に動作する事を確認してください。 Rust in Chromium Chromium での Rust は半日コースで、Chromium ブラウザの一部として Rust を使用する方法に ついて詳しく説明します。Chromium の gn ビルドシステムで Rust を使用することで、サードパー ティライブラリ(「クレート」)、および C++ との相互運用性を導入できます。 受講者は、Chromium application processors are covered. マイクロコントローラの章では、事前に BBCmicro:bitv2 開発ボードを購入する必要があります。ま た、welcome ページで説明されているように、複数のパッケージをインストールする必要がありま す。 Rust での並行性 The Concurrency in Rust deep dive is a full day class エコシステムで広く使われているビルドシステム兼パッケージ マネージャである Cargo という標準ツールに出会います。ここでは、Cargo の概要や使用方法、そし て本講座における重要性について簡単に説明します。 インストール https://rustup.rs/ の手順に沿ってインストールしてください。 This will give you the Cargo build tool (cargo)0 码力 | 381 页 | 1.36 MB | 10 月前3 Comprehensive Rust(日语) 202412認し、手動で実行した際に正常に動作する事を確認してください。 Rust in Chromium Chromium での Rust は半日コースで、Chromium ブラウザの一部として Rust を使用する方法に ついて詳しく説明します。Chromium の gn ビルドシステムで Rust を使用することで、サードパー ティライブラリ(「クレート」)、および C++ との相互運用性を導入できます。 受講者は、Chromium application processors are covered. マイクロコントローラの章では、事前に BBCmicro:bitv2 開発ボードを購入する必要があります。ま た、welcome ページで説明されているように、複数のパッケージをインストールする必要がありま す。 Rust での並行性 The Concurrency in Rust deep dive is a full day class エコシステムで広く使われているビルドシステム兼パッケージ マネージャである Cargo という標準ツールに出会います。ここでは、Cargo の概要や使用方法、そし て本講座における重要性について簡単に説明します。 インストール https://rustup.rs/ の手順に沿ってインストールしてください。 This will give you the Cargo build tool (cargo)0 码力 | 381 页 | 1.36 MB | 10 月前3
 Hello 算法 1.2.0 繁体中文 Rust 版你邁入資料結構與演算法的知識殿堂。 1.2 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義 資料結構(data 執行效率可能相差很大,選擇合適的資料結構是關鍵。 圖 1‑4 資料結構與演算法的關係 資料結構與演算法猶如圖 1‑5 所示的拼裝積木。一套積木,除了包含許多零件之外,還附有詳細的組裝說明 書。我們按照說明書一步步操作,就能組裝出精美的積木模型。 第 1 章 初識演算法 www.hello‑algo.com 15 圖 1‑5 拼裝積木 兩者的詳細對應關係如表 1‑1 所示。 表 1‑1 將資料結構與演算法類比為拼裝積木 資料結構與演算法 拼裝積木 輸入資料 未拼裝的積木 資料結構 積木組織形式,包括形狀、大小、連線方式等 演算法 把積木拼成目標形態的一系列操作步驟 輸出資料 積木模型 值得說明的是,資料結構與演算法是獨立於程式語言的。正因如此,本書得以提供基於多種程式語言的實 現。 約定俗成的簡稱 在實際討論時,我們通常會將“資料結構與演算法”簡稱為“演算法”。比如眾所周知的 LeetCode0 码力 | 388 页 | 18.82 MB | 10 月前3 Hello 算法 1.2.0 繁体中文 Rust 版你邁入資料結構與演算法的知識殿堂。 1.2 演算法是什麼 1.2.1 演算法定義 演算法(algorithm)是在有限時間內解決特定問題的一組指令或操作步驟,它具有以下特性。 ‧ 問題是明確的,包含清晰的輸入和輸出定義。 ‧ 具有可行性,能夠在有限步驟、時間和記憶體空間下完成。 ‧ 各步驟都有確定的含義,在相同的輸入和執行條件下,輸出始終相同。 1.2.2 資料結構定義 資料結構(data 執行效率可能相差很大,選擇合適的資料結構是關鍵。 圖 1‑4 資料結構與演算法的關係 資料結構與演算法猶如圖 1‑5 所示的拼裝積木。一套積木,除了包含許多零件之外,還附有詳細的組裝說明 書。我們按照說明書一步步操作,就能組裝出精美的積木模型。 第 1 章 初識演算法 www.hello‑algo.com 15 圖 1‑5 拼裝積木 兩者的詳細對應關係如表 1‑1 所示。 表 1‑1 將資料結構與演算法類比為拼裝積木 資料結構與演算法 拼裝積木 輸入資料 未拼裝的積木 資料結構 積木組織形式,包括形狀、大小、連線方式等 演算法 把積木拼成目標形態的一系列操作步驟 輸出資料 積木模型 值得說明的是,資料結構與演算法是獨立於程式語言的。正因如此,本書得以提供基於多種程式語言的實 現。 約定俗成的簡稱 在實際討論時,我們通常會將“資料結構與演算法”簡稱為“演算法”。比如眾所周知的 LeetCode0 码力 | 388 页 | 18.82 MB | 10 月前3
 硬件创业公司的Rust应用和转型 - 陈昱衡o t p a r k 旗 下 重 庆 明 月 湖 国 际 智 能 产 业 科 创 基 地 投 资 成 立 , 公 司 致 力 于 为 生 命 科 学 实 验 提 供 优 质 解 决 方 案 , 目 前 主 要 业 务 为 研 发 、 生 产 、 销 售 实 验 鼠 相 关 动 物 实 验 设 备 及 其 配 套 软 件 和 耗 材 。 重 庆 明 月 湖 国 际 智 能 产 业 科 创 基 基 地 投 资 人 / 创 业 导 师 : 李 泽 湘 教 授 鹿 仔 科 技 ( 重 庆 明 月 湖 ) 鹿 仔 科 技 东 莞 研 发 中 心 ( 东 莞 松 山 湖 ) 行为学实验仪器: ... 脑立体定位仪: ... 其他仪器: ... 为什么选择Rust 嵌入式端Rust UI方面的Rust应用 0 1 2 公司Rust人才培养 3 Rust在嵌入式公司应用的想法0 码力 | 23 页 | 4.95 MB | 1 年前3 硬件创业公司的Rust应用和转型 - 陈昱衡o t p a r k 旗 下 重 庆 明 月 湖 国 际 智 能 产 业 科 创 基 地 投 资 成 立 , 公 司 致 力 于 为 生 命 科 学 实 验 提 供 优 质 解 决 方 案 , 目 前 主 要 业 务 为 研 发 、 生 产 、 销 售 实 验 鼠 相 关 动 物 实 验 设 备 及 其 配 套 软 件 和 耗 材 。 重 庆 明 月 湖 国 际 智 能 产 业 科 创 基 基 地 投 资 人 / 创 业 导 师 : 李 泽 湘 教 授 鹿 仔 科 技 ( 重 庆 明 月 湖 ) 鹿 仔 科 技 东 莞 研 发 中 心 ( 东 莞 松 山 湖 ) 行为学实验仪器: ... 脑立体定位仪: ... 其他仪器: ... 为什么选择Rust 嵌入式端Rust UI方面的Rust应用 0 1 2 公司Rust人才培养 3 Rust在嵌入式公司应用的想法0 码力 | 23 页 | 4.95 MB | 1 年前3
 Rust OS 开源操作系统训练营的教与学-0615-李明2022:陈林峰《rCore 的龙芯平台移植》 • 2022:唐洪雨《基于Rust语言的嵌入式实时操作系统RFreeRTOS的移植》 • 2022:朱懿《zCore 操作系统容器化的探索》 • 2022:米明恒《操作系统调试器VSCode插件系统架构设计与实现》 • 2023:周子琪/周毅《ArceOS在华山派CV1811H上的移植》 • 2023:齐呈祥《hypercraft 开源项目》 学习博客0 码力 | 26 页 | 2.62 MB | 1 年前3 Rust OS 开源操作系统训练营的教与学-0615-李明2022:陈林峰《rCore 的龙芯平台移植》 • 2022:唐洪雨《基于Rust语言的嵌入式实时操作系统RFreeRTOS的移植》 • 2022:朱懿《zCore 操作系统容器化的探索》 • 2022:米明恒《操作系统调试器VSCode插件系统架构设计与实现》 • 2023:周子琪/周毅《ArceOS在华山派CV1811H上的移植》 • 2023:齐呈祥《hypercraft 开源项目》 学习博客0 码力 | 26 页 | 2.62 MB | 1 年前3
 Rust 程序设计语言简体中文版作用域(scope)。作用域是一个项(item) 在程序中有效的范围。假设有这样一个变量: let s = "hello"; 变量 s 绑定到了一个字符串字面值,这个字符串值是硬编码进程序代码中的。这个变量从声 明的点开始直到当前 作用域 结束时都是有效的。示例 4-1 中的注释标明了变量 s 在何处是有 效的。 # fn main() { { // s 在这里无效,它尚未声明 “使用字符串储存 UTF-8 编码的文本” 部分会更加全面的讨论 UTF-8 处理问题。 在记住所有这些知识后,让我们重写 first_word 来返回一个 slice。“字符串 slice” 的类型声 明写作 &str : 文件名:src/main.rs fn first_word(s: &String) -> &str { let bytes = s.as_bytes(); for a5d72f7699b0 结构体和我们在“元组类型”部分论过的元组类似,它们都包含多个相关的值。和元组一样,结 构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表 明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例 中的值。 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述 它所组合的数0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版作用域(scope)。作用域是一个项(item) 在程序中有效的范围。假设有这样一个变量: let s = "hello"; 变量 s 绑定到了一个字符串字面值,这个字符串值是硬编码进程序代码中的。这个变量从声 明的点开始直到当前 作用域 结束时都是有效的。示例 4-1 中的注释标明了变量 s 在何处是有 效的。 # fn main() { { // s 在这里无效,它尚未声明 “使用字符串储存 UTF-8 编码的文本” 部分会更加全面的讨论 UTF-8 处理问题。 在记住所有这些知识后,让我们重写 first_word 来返回一个 slice。“字符串 slice” 的类型声 明写作 &str : 文件名:src/main.rs fn first_word(s: &String) -> &str { let bytes = s.as_bytes(); for a5d72f7699b0 结构体和我们在“元组类型”部分论过的元组类似,它们都包含多个相关的值。和元组一样,结 构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表 明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例 中的值。 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述 它所组合的数0 码力 | 600 页 | 12.99 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412takes_u32(y); } 这张幻灯片演示了 Rust 编译器是如何根据变量声明和用法来推导其类型的。 需要重点强调的是这样声明的变量并非像那种动态类型语言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 交互 CXX crate 使得在 Rust 和 C++ 之间进行安全的互操作成为可能。 整体的方法如下: 210 37.2.1 桥接模块 CXX 依 赖 于 提 供 的 函 数 签 名 说 明,这 些 签 名 会 在 不 用 语 言 之 间 进 行 交 互 使 用。您 可 以 在 带 有 #[cxx::bridge] 属性宏注解的 Rust 模块中使用 extern 代码块提供此说明。 mod0 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412takes_u32(y); } 这张幻灯片演示了 Rust 编译器是如何根据变量声明和用法来推导其类型的。 需要重点强调的是这样声明的变量并非像那种动态类型语言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 交互 CXX crate 使得在 Rust 和 C++ 之间进行安全的互操作成为可能。 整体的方法如下: 210 37.2.1 桥接模块 CXX 依 赖 于 提 供 的 函 数 签 名 说 明,这 些 签 名 会 在 不 用 语 言 之 间 进 行 交 互 使 用。您 可 以 在 带 有 #[cxx::bridge] 属性宏注解的 Rust 模块中使用 extern 代码块提供此说明。 mod0 码力 | 359 页 | 1.33 MB | 10 月前3
 Rust 语言学习笔记2.4.2.4 数组 array Rust 的数组是被表示为[T;N]。其中 N 表示数组大小,并且这个大小一定是个 编译时就能获得的整数值,T 表示泛型类型,即任意类型。我们可以这么来声 明和使用一个数组: let a = [8, 9, 10]; let b: [u8;3] = [8, 6, 5]; print!("{}", a[0]); 和 Golang 一样,Rust 的数组中的0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记2.4.2.4 数组 array Rust 的数组是被表示为[T;N]。其中 N 表示数组大小,并且这个大小一定是个 编译时就能获得的整数值,T 表示泛型类型,即任意类型。我们可以这么来声 明和使用一个数组: let a = [8, 9, 10]; let b: [u8;3] = [8, 6, 5]; print!("{}", a[0]); 和 Golang 一样,Rust 的数组中的0 码力 | 117 页 | 2.24 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0变量作用域 既然我们已经掌握了基本语法,将不会在之后的例子中包含 fn main() { 代码,所以如果你是 一路跟过来的,必须手动将之后例子的代码放入一个 main 函数中。这样,例子将显得更加简 明,使我们可以关注实际细节而不是样板代码。 在所有权的第一个例子中,我们看看一些变量的 作用域(scope)。作用域是一个项(item) 在程序中有效的范围。假设有这样一个变量: let s = "hello"; 简体中文版 结构体的定义和实例化 结构体和我们在“元组类型”部分论过的元组类似,它们都包含多个相关的值。和元组一样,结 构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表 明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例 中的值。 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述 它所组合的数据 有输出生命周期参数: fn foo<'a>(x: &'a i32) -> &'a i32。 第三条规则是如果方法有多个输入生命周期参数并且其中一个参数是 &self 或 &mut self,说 明这是个方法,那么所有输出生命周期参数被赋予 self 的生命周期。第三条规则使得方法更 容易读写,因为只需更少的符号。 假设我们自己就是编译器。并应用这些规则来计算示例 10-25 中 first_word0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0变量作用域 既然我们已经掌握了基本语法,将不会在之后的例子中包含 fn main() { 代码,所以如果你是 一路跟过来的,必须手动将之后例子的代码放入一个 main 函数中。这样,例子将显得更加简 明,使我们可以关注实际细节而不是样板代码。 在所有权的第一个例子中,我们看看一些变量的 作用域(scope)。作用域是一个项(item) 在程序中有效的范围。假设有这样一个变量: let s = "hello"; 简体中文版 结构体的定义和实例化 结构体和我们在“元组类型”部分论过的元组类似,它们都包含多个相关的值。和元组一样,结 构体的每一部分可以是不同类型。但不同于元组,结构体需要命名各部分数据以便能清楚的表 明其值的意义。由于有了这些名字,结构体比元组更灵活:不需要依赖顺序来指定或访问实例 中的值。 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述 它所组合的数据 有输出生命周期参数: fn foo<'a>(x: &'a i32) -> &'a i32。 第三条规则是如果方法有多个输入生命周期参数并且其中一个参数是 &self 或 &mut self,说 明这是个方法,那么所有输出生命周期参数被赋予 self 的生命周期。第三条规则使得方法更 容易读写,因为只需更少的符号。 假设我们自己就是编译器。并应用这些规则来计算示例 10-25 中 first_word0 码力 | 562 页 | 3.23 MB | 26 天前3
共 14 条
- 1
- 2













