 Rust 异步 Runtime 的兼容层  - 施继成Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel0 码力 | 22 页 | 957.41 KB | 1 年前3 Rust 异步 Runtime 的兼容层  - 施继成Rust 异步 Runtime 的兼容层 施继成 @ DatenLord Introduce what’s rust async runtime # Rust async runtime Analyze the reason of runtime isolation # Async runtime binding # Compatible layer 1 Create a wheel0 码力 | 22 页 | 957.41 KB | 1 年前3
 Hello 算法 1.2.0 简体中文 Rust 版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法 ”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归:0 码力 | 387 页 | 18.51 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Rust 版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法 ”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归:0 码力 | 387 页 | 18.51 MB | 10 月前3
 Hello 算法 1.1.0 Rust版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法 ”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归:0 码力 | 388 页 | 18.50 MB | 1 年前3 Hello 算法 1.1.0 Rust版“如果我当年学数据结构与算法的时候有《Hello 算法》,学起来应该会简单 10 倍!” ——李沐,亚马逊资深首席科学家 计算机的出现给世界带来了巨大变革,它凭借高速的计算能力和出色的可编程性,成为了执行算法与处理数 据的理想媒介。无论是电子游戏的逼真画面、自动驾驶的智能决策,还是 AlphaGo 的精彩棋局、ChatGPT 的自然交互,这些应用都是算法在计算机上的精妙演绎。 事实上,在计算机问世之前,算法 ”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为尾递归(tail recursion)。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归:0 码力 | 388 页 | 18.50 MB | 1 年前3
 Hello 算法 1.0.0 Rust版”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归: 省略所有系数。例如,循环 2? 次、5? + 1 次等,都可以简化记为 ? 次,因为 ? 前面的系数对时间复 杂度没有影响。 3. 循环嵌套时使用乘法。总操作数量等于外层循环和内层循环操作数量之积,每一层循环依然可以分别 套用第 1. 点和第 2. 点的技巧。 给定一个函数,我们可以用上述技巧来统计操作数量: fn algorithm(n: i32) { let mut a = 1; // +0(技巧0 码力 | 383 页 | 17.61 MB | 1 年前3 Hello 算法 1.0.0 Rust版”。 2. 归:触发“终止条件”后,程序从最深层的递归函数开始逐层返回,汇聚每一层的结果。 而从实现的角度看,递归代码主要包含三个要素。 1. 终止条件:用于决定什么时候由“递”转“归”。 2. 递归调用:对应“递”,函数调用自身,通常输入更小或更简化的参数。 3. 返回结果:对应“归”,将当前递归层级的结果返回至上一层。 观察以下代码,我们只需调用函数 recur(n) ,就可以完成 间效率上与迭代相当。这种情况被称为「尾递归 tail recursion」。 ‧ 普通递归:当函数返回到上一层级的函数后,需要继续执行代码,因此系统需要保存上一层调用的上下 文。 ‧ 尾递归:递归调用是函数返回前的最后一个操作,这意味着函数返回到上一层级后,无须继续执行其他 操作,因此系统无须保存上一层函数的上下文。 以计算 1 + 2 + ⋯ + ? 为例,我们可以将结果变量 res 设为函数参数,从而实现尾递归: 省略所有系数。例如,循环 2? 次、5? + 1 次等,都可以简化记为 ? 次,因为 ? 前面的系数对时间复 杂度没有影响。 3. 循环嵌套时使用乘法。总操作数量等于外层循环和内层循环操作数量之积,每一层循环依然可以分别 套用第 1. 点和第 2. 点的技巧。 给定一个函数,我们可以用上述技巧来统计操作数量: fn algorithm(n: i32) { let mut a = 1; // +0(技巧0 码力 | 383 页 | 17.61 MB | 1 年前3
 新一代分布式高性能图数据库的构建 - 沈游人其中异质图建模与表示学习技术和超大规模图学习系统处于国际领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 AtlasGraph 架构及实现 新一代图技术应用特征简介 Takeaway AtlasGraph 架构概览 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark Spark 连接器 Python UDF 执行器 索引管理 一致性存储 RAFT 分片管理 元数据 集群管理 用户权限 GNN 应用层 Atlas 图平台 Atlas Studio Atlas Client 基础 设施 Docker/K8S/VM X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎0 码力 | 38 页 | 24.68 MB | 1 年前3 新一代分布式高性能图数据库的构建 - 沈游人其中异质图建模与表示学习技术和超大规模图学习系统处于国际领 先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 AtlasGraph 架构及实现 新一代图技术应用特征简介 Takeaway AtlasGraph 架构概览 存储层 副本管理 CRAQ 图原生存储 索引 LSM-Tree 容灾保障 ( BR ) 元数据层 事务管理 MVOCC 计算层 Cypher AST 优化器 图计算 内存加速引 擎 服务接口 HTTP/RPC Spark Spark 连接器 Python UDF 执行器 索引管理 一致性存储 RAFT 分片管理 元数据 集群管理 用户权限 GNN 应用层 Atlas 图平台 Atlas Studio Atlas Client 基础 设施 Docker/K8S/VM X86/ARM - 基于 RUST 语言保证性能优势 - 分布式架构性能可线性扩展 - 针对大规模图优化的存算引擎0 码力 | 38 页 | 24.68 MB | 1 年前3
 简谈 Rust 与国密 TLS - 王江桐TLCP、区块链等场景,用于签名 验签等 Sm3 GM/T 0004-2012 ISO/IEC 10118-3:2018 计算密码杂凑 哈希 256 SHA256 是 TLCP、数字签名及验证、消息认 证码生成及验证、随机数生成、 密钥扩充 Sm4 GM/T 0002-2012 ISO/IEC WD1 18033- 3/AMD2 分组加解密 分组加 密 128 AES128,但 是更多次轮询 是 TLCP、消息加解密,用于替代 家商用密码体系中被用来替换 RSA 算法。 • 椭圆曲线可使用更少的运算位数来达成与RSA相等的 安全性 • 椭圆曲线与RSA的安全性都依赖于离散对数问题的复 杂程度 • 离散对数问题:已知数A,B,且A = B^n,求数 n SM2 加解密算法:流程图 Flowchart of SM2 Encrypt and Decrypt Algorithm Rust China Conf 2022 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • 在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成、密钥 扩充等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA- 256 相当。 • SM3 将对长度为l(l < 2^64) 比特的消息 m,经过填充和迭代压缩,生成杂凑值,杂凑值长度为0 码力 | 44 页 | 3.70 MB | 1 年前3 简谈 Rust 与国密 TLS - 王江桐TLCP、区块链等场景,用于签名 验签等 Sm3 GM/T 0004-2012 ISO/IEC 10118-3:2018 计算密码杂凑 哈希 256 SHA256 是 TLCP、数字签名及验证、消息认 证码生成及验证、随机数生成、 密钥扩充 Sm4 GM/T 0002-2012 ISO/IEC WD1 18033- 3/AMD2 分组加解密 分组加 密 128 AES128,但 是更多次轮询 是 TLCP、消息加解密,用于替代 家商用密码体系中被用来替换 RSA 算法。 • 椭圆曲线可使用更少的运算位数来达成与RSA相等的 安全性 • 椭圆曲线与RSA的安全性都依赖于离散对数问题的复 杂程度 • 离散对数问题:已知数A,B,且A = B^n,求数 n SM2 加解密算法:流程图 Flowchart of SM2 Encrypt and Decrypt Algorithm Rust China Conf 2022 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • 在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成、密钥 扩充等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA- 256 相当。 • SM3 将对长度为l(l < 2^64) 比特的消息 m,经过填充和迭代压缩,生成杂凑值,杂凑值长度为0 码力 | 44 页 | 3.70 MB | 1 年前3
 Rust 语言学习笔记细心的朋友会发现,aaa.rs 中,没有使用 mod xxx {} 这样包裹起来,是 因为 mod xxx; 相当于把 xxx.rs 文件用 mod xxx {} 包裹起来了。 (又一个约定)初学者往往会多加一层,请注意。 1.2.3 多文件模块的层级关系 Rust 的模块支持层级结构,但这种层级结构本身与文件系统目录的层级结构是 解耦的。 mod xxx; 这个 xxx 不能包含::号。也即在这个表达形式中,是没法引用多层结 x ); } 设计目的: 1.简化边界条件的确定,减少出错; 2.减少运行时边界检查,提高性能。 当你需要记录你已经循环了多少次了的时候,你可以使用 .enumerate() 函 数。比如: for (i,j) in (5..10).enumerate() { println!("i = {} and j = {}", i, j); } 2.3.2 while 2.3.4 break 和 continue Rust 也提供了 break 和 continue 两个关键字用来控制循环的流程。 1.break 用来跳出当前层的循环; 2.continue 用来执行当前层的下一次迭代 break 和 continue 可以大大简化代码,不论在哪一门语言中。 for x in 0..10 { if x % 2 == 0 { continue;0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记细心的朋友会发现,aaa.rs 中,没有使用 mod xxx {} 这样包裹起来,是 因为 mod xxx; 相当于把 xxx.rs 文件用 mod xxx {} 包裹起来了。 (又一个约定)初学者往往会多加一层,请注意。 1.2.3 多文件模块的层级关系 Rust 的模块支持层级结构,但这种层级结构本身与文件系统目录的层级结构是 解耦的。 mod xxx; 这个 xxx 不能包含::号。也即在这个表达形式中,是没法引用多层结 x ); } 设计目的: 1.简化边界条件的确定,减少出错; 2.减少运行时边界检查,提高性能。 当你需要记录你已经循环了多少次了的时候,你可以使用 .enumerate() 函 数。比如: for (i,j) in (5..10).enumerate() { println!("i = {} and j = {}", i, j); } 2.3.2 while 2.3.4 break 和 continue Rust 也提供了 break 和 continue 两个关键字用来控制循环的流程。 1.break 用来跳出当前层的循环; 2.continue 用来执行当前层的下一次迭代 break 和 continue 可以大大简化代码,不论在哪一门语言中。 for x in 0..10 { if x % 2 == 0 { continue;0 码力 | 117 页 | 2.24 MB | 1 年前3
 洛佳 组件化驱动、ROM运行环境与RustSBI, 抽 象 接 口 , 使 用 片 外 外 设 支 持 库 高 速 板 级 通 信 D D R 、 P S R A M 等 , 结 合 控 制 器 选 择 和 输 入 合 适 的 参 数 , 用 于 准 备 后 续 启 动 过 程 多 媒 体 外 设 M I P I 、 H D M I 、 D i s p l a y P o r t 和 音 频 连 接 等 , 与 对 应 M 多 核 启 动 直 接 使 用 R O M 机 制 开 启 所 有 三 个 核 , 并 加 载 相 关 的 固 件 。 相 比 额 外 引 导 程 序 而 言 , 节 省 引 导 链 级 数 , 增 加 安 全 性 和 效 率 。 2023年的RustSBI 第 03 部分 RustSBI软件架构更新 • RISC-V SBI可运用于机器态和虚拟化 的宿主态,此时RustSBI实现应为虚 com/YdrMaster/fast- trap 示例:RustSBI原型设计系统选型界面 RustSBI与生态后续引导链 • 对RISC-V UEFI,RustSBI准备好SBI 环境。 • RustSBI充当至关重要的安全 层,并准备好S态软件的环境 • UEFI部分运行在S态 • 对LinuxBoot,RustSBI参与准备好 rootfs和最小Linux环境的代码中。 • 一个优秀的例子是Oreboot1 • RustSBI原型设计系统将会提供0 码力 | 21 页 | 3.12 MB | 1 年前3 洛佳 组件化驱动、ROM运行环境与RustSBI, 抽 象 接 口 , 使 用 片 外 外 设 支 持 库 高 速 板 级 通 信 D D R 、 P S R A M 等 , 结 合 控 制 器 选 择 和 输 入 合 适 的 参 数 , 用 于 准 备 后 续 启 动 过 程 多 媒 体 外 设 M I P I 、 H D M I 、 D i s p l a y P o r t 和 音 频 连 接 等 , 与 对 应 M 多 核 启 动 直 接 使 用 R O M 机 制 开 启 所 有 三 个 核 , 并 加 载 相 关 的 固 件 。 相 比 额 外 引 导 程 序 而 言 , 节 省 引 导 链 级 数 , 增 加 安 全 性 和 效 率 。 2023年的RustSBI 第 03 部分 RustSBI软件架构更新 • RISC-V SBI可运用于机器态和虚拟化 的宿主态,此时RustSBI实现应为虚 com/YdrMaster/fast- trap 示例:RustSBI原型设计系统选型界面 RustSBI与生态后续引导链 • 对RISC-V UEFI,RustSBI准备好SBI 环境。 • RustSBI充当至关重要的安全 层,并准备好S态软件的环境 • UEFI部分运行在S态 • 对LinuxBoot,RustSBI参与准备好 rootfs和最小Linux环境的代码中。 • 一个优秀的例子是Oreboot1 • RustSBI原型设计系统将会提供0 码力 | 21 页 | 3.12 MB | 1 年前3
 Rust 程序设计语言简体中文版代码了。所以在第二章我们会构建一个猜猜 看游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 22/600 Rust 程序设计语言 简体中文版 2 . 写 个 猜 数 字 游 戏 写个猜数字游戏 ch02-00-guessing-game-tutorial.md commit f28554d1b216d49a4d11d05995302cf54a0f9d72 等知识!后续章节会深入探讨这些概念的细节。在这一 章,我们将练习基础内容。 我们会实现一个经典的新手编程问题:猜猜看游戏。它是这么工作的:程序将会随机生成一个 1 到 100 之间的随机整数。接着它会请玩家猜一个数并输入,然后提示猜测是大了还是小了。 如果猜对了,它会打印祝贺信息并退出。 准备一个新项目 要创建一个新项目,进入第一章中创建的 projects 目录,使用 Cargo 新建一个项目,如下: $ 。 生成一个秘密数字 接下来,需要生成一个秘密数字,好让用户来猜。秘密数字应该每次都不同,这样重复玩才不 会乏味;范围应该在 1 到 100 之间,这样才不会太困难。Rust 标准库中尚未包含随机数功能。 然而,Rust 团队还是提供了一个包含上述功能的 rand crate。 使用 crate 来增加更多功能 记住,crate 是一个 Rust 代码包。我们正在构建的项目是一个 二进制 crate,它生成一个可执0 码力 | 600 页 | 12.99 MB | 1 年前3 Rust 程序设计语言简体中文版代码了。所以在第二章我们会构建一个猜猜 看游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 22/600 Rust 程序设计语言 简体中文版 2 . 写 个 猜 数 字 游 戏 写个猜数字游戏 ch02-00-guessing-game-tutorial.md commit f28554d1b216d49a4d11d05995302cf54a0f9d72 等知识!后续章节会深入探讨这些概念的细节。在这一 章,我们将练习基础内容。 我们会实现一个经典的新手编程问题:猜猜看游戏。它是这么工作的:程序将会随机生成一个 1 到 100 之间的随机整数。接着它会请玩家猜一个数并输入,然后提示猜测是大了还是小了。 如果猜对了,它会打印祝贺信息并退出。 准备一个新项目 要创建一个新项目,进入第一章中创建的 projects 目录,使用 Cargo 新建一个项目,如下: $ 。 生成一个秘密数字 接下来,需要生成一个秘密数字,好让用户来猜。秘密数字应该每次都不同,这样重复玩才不 会乏味;范围应该在 1 到 100 之间,这样才不会太困难。Rust 标准库中尚未包含随机数功能。 然而,Rust 团队还是提供了一个包含上述功能的 rand crate。 使用 crate 来增加更多功能 记住,crate 是一个 Rust 代码包。我们正在构建的项目是一个 二进制 crate,它生成一个可执0 码力 | 600 页 | 12.99 MB | 1 年前3
 Rust 程序设计语言 简体中文版 1.85.0• 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言 简体中文版 编写一个猜数字游戏 让我们一起动手完成一个项目来快速上手 生成一个秘密数字 接下来,需要生成一个秘密数字,好让用户来猜。秘密数字应该每次都不同,这样重复玩才不 会乏味;范围应该在 1 到 100 之间,这样才不会太困难。Rust 标准库中尚未包含随机数功能。 然而,Rust 团队还是提供了一个包含上述功能的 rand crate。 26/562Rust 程序设计语言 简体中文版 使用 crate 来增加更多功能 记住,crate 是一组 Rust 第十四章会讲到 Cargo 及其生态系统 的更多内容,不过目前你只需要了解这么多。通过 Cargo 复用库文件非常容易,因此 Rustacean 能够编写出由很多包组装而成的更轻巧的项目。 生成一个随机数 让我们开始使用 rand 来生成一个要猜测的数字。下一步是更新 src/main.rs,如示例 2-3 所 示。 文件名:src/main.rs use std::io; use rand::Rng;0 码力 | 562 页 | 3.23 MB | 26 天前3 Rust 程序设计语言 简体中文版 1.85.0• 直接通过 rustc 编写并运行 Hello, world! 程序 • 使用 Cargo 创建并运行新项目 是时候通过构建更实质性的程序来熟悉读写 Rust 代码了。所以在第二章我们会构建一个猜数 字游戏程序。如果你更愿意从学习 Rust 常用的编程概念开始,请阅读第三章,接着再回到第 二章。 21/562Rust 程序设计语言 简体中文版 编写一个猜数字游戏 让我们一起动手完成一个项目来快速上手 生成一个秘密数字 接下来,需要生成一个秘密数字,好让用户来猜。秘密数字应该每次都不同,这样重复玩才不 会乏味;范围应该在 1 到 100 之间,这样才不会太困难。Rust 标准库中尚未包含随机数功能。 然而,Rust 团队还是提供了一个包含上述功能的 rand crate。 26/562Rust 程序设计语言 简体中文版 使用 crate 来增加更多功能 记住,crate 是一组 Rust 第十四章会讲到 Cargo 及其生态系统 的更多内容,不过目前你只需要了解这么多。通过 Cargo 复用库文件非常容易,因此 Rustacean 能够编写出由很多包组装而成的更轻巧的项目。 生成一个随机数 让我们开始使用 rand 来生成一个要猜测的数字。下一步是更新 src/main.rs,如示例 2-3 所 示。 文件名:src/main.rs use std::io; use rand::Rng;0 码力 | 562 页 | 3.23 MB | 26 天前3
共 26 条
- 1
- 2
- 3













