Comprehensive Rust(简体中文) 202412. . . 46 9.5.1 解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10 用户定义的类型 48 10.1 结构体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 决方案,例如告诉大家在标准库的什么位置可以找到 相关信息。 以上就是全部事项,祝你授课顺利!希望你能像我们一样享受其中的乐趣! 欢迎你在课后提供反馈,以帮助我们不断改进课程。我们非常期待了解哪些方面做得不错,哪些方面还需 要改进。同时非常欢迎学生们向我们发送反馈! 1.1 课程结构 本页供课程讲师使用。 12 Rust 基础 前四天的内容是 Rust 基础。这几天的课程节奏很快,内容也很丰富! Afternoon (2 hours and 35 minutes, including breaks) Segment Duration 元组和数组 35 minutes 引用 55 minutes 用户定义的类型 50 minutes • Day 2 Morning (2 hours and 55 minutes, including breaks) Segment Duration 欢迎 30 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 程序设计语言简体中文版..................................................................................... 276 12.3. 重构以改进模块化与错误处理 ................................................................................... 278 12 ........................................................................................ 329 13.3. 改进之前的 I/O 项目 ........................................................................................ Rust 能让你 把在一个领域中学习的技能延伸到另一个领域:你可以通过编写网页应用来学习 Rust,接着 将同样的技能应用到你的 Raspberry Pi(树莓派)上。 本书全面介绍了 Rust 为用户赋予的能力。其内容平易近人,致力于帮助你提升 Rust 的知识, 并且提升你作为程序员整体的理解与自信。欢迎你加入 Rust 社区,让我们准备深入学习 Rust 吧! —— Nicholas Matsakis0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 12.3. 重构以改进模块化与错误处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 13.3. 改进之前的 I/O 项目 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rust 能让你 把在一个领域中学习的技能延伸到另一个领域:你可以通过编写网页应用来学习 Rust,接着 将同样的技能应用到你的 Raspberry Pi(树莓派)上。 本书全面介绍了 Rust 为用户赋予的能力。其内容平易近人,致力于帮助你提升 Rust 的知识, 并且提升你作为程序员整体的理解与自信。欢迎你加入 Rust 社区,让我们准备深入学习 Rust 吧! —— Nicholas Matsakis0 码力 | 562 页 | 3.23 MB | 24 天前3
Rust HTTP 协议栈在终端通信场景的实践 - 胡凯HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议主要具有以下特点: ✓ 支持客户/服务器模式。 协议有良好支持: HTTP 协议是以 TCP\TLS\UDP 等各种连接为基础的,非常依赖于高性能的 IO 操作。 利用 Rust 异步实现 HTTP 协议和各种应用程序能得到十分可观的性能提升,并且能降低用户编码的难度。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与 HTTP 协议 借助于 Rust 异步能力的热门 Rust HTTP 协议库或应用库: 2023, Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: ➢ 并发量、吞吐量需求较高 ➢ 网络环境稳定 ➢ 不太需要体现交互界面 ➢ 不太关注资源使用 比较适合构建浏览器、大型 WEB 服务器等。 终端 HTTP 通信场景浅析 Part 03 探讨终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题 Rust0 码力 | 26 页 | 1.25 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索组织应用程序资源,并在整个交付过程中通过身份确保安 全 3.为 Kubernetes 和云精简应用交付工作流,并提供开发友 好的体验 基于 Platform as Code (平台服务即代码)理念,研发者 可以用统一的组织和操作界面定义应用交付生命周期,充分 利用Kubernetes和云的混合能力,通过端到端的交付工作 流程,真正实现集中定义、随处交付。 KusionStack 架构 • KCL:面向应用研发者的 配置策略专用高级编程语 4. 通过 FFI 暴露 C API 供多语言使用和扩展、方便集成 5. WASM 支持友好 6. 智能合约语言? 为什么选择 Rust? 03 重写的收益 稳定性和性能提升 IDE:用户体验提升 源于 Rust 强大的编译检查和错误 处理方式, 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github.com/KusionStack/kcl#showcase Case2: Konfig模型 + 用户定义 > https://github.com/KusionStack/konfig/blob/ main/base/examples/native/nginx_d0 码力 | 25 页 | 3.50 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐2022 – 2023, Shanghai, China • SM3 为密码杂凑算法,采用密码散列(hash)函数标准,用于替代 MD5/SHA-1/SHA-2 等国际 算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位,其中使用了异或、模、模加、移位、与、或、非运算,由填充、迭代过程、消息扩展和压缩 函数所构成。 • 保证信息的完整性。 • Cryptography),非对称加密,标识加密将用户的标识 (如微信号、邮件地址、手机号码、QQ 号等)作为公钥,省略了交换数字证书和公钥过程,使得 安全系统变得易于部署和管理。提供签名校验,密钥交换,密钥封装与加解密功能。由于以上用 例,可以用于网络安全密码协议,如SSL/TLS。 • 保证数据机密性、真实性和完整性。 • 在商用密码体系中,SM9 主要用于用户的身份认证,据新华网公开报道,SM9 的加密强度等同于 实现基于身份的密码体制,也就是公钥与用户的身份信息即标识相关,从而比传统意义上 的公钥密码体制有许多优点,省去了证书管理等。因此,使用SM9算法不需要申请数字证 书,适用于互联网各种新兴应用的安全保障,应用可采用手机号码或邮件地址作为公钥, 实现数据加密、身份认证、通话加密、通道加密等安全应用,并具有使用方便,易于部署 的特点。 • 不同于传统签名算法的由用户随机选择私钥然后 计算得到公钥的方式,SM9 能够实现用户指定公0 码力 | 44 页 | 3.70 MB | 1 年前3
Rust 语言学习笔记不能相互循环包含 4.开发依赖包不能包含在内 5. features 组只能依赖于可选软件包 features 的一个重要用途就是,当开发者需要对软件包进行最终的发布时,在 进行构建时可以声明暴露给终端用户的 features,这可以通过下述命令实现: $ cargo build --release --features "shumway pdf" 第六章 Rust 语言高级特性 6 RefCell)。 相对于标准情况的 静态借用,RefCell 实现了 运行时借用,这个借用是临 时的。这意味着,编译器对 RefCell 中的内容,不会做静态借用检查,也意 味着,出了什么问题,用户自己负责。 可能会编译通过而运行时 panic 掉。 RefCell 的特点: 1.在不确定一个对象是否实现了 Copy 时,直接选 RefCell; 2.如果被包裹对象,同时被可变 received); } 例如上述代码编译通过,但是在运行过程中会死锁。而 rust 的编译器无法识别 此类错误。Rust 对安全的理解是死锁不属于内存安全问题。 Rust 在并发上的改进是: 通过改进所有权和类型检查,Rust 很多并发错误都是 编译时 错误,而非运 行时错误。 更强大的编译器和类型检查排除了很多并发问题,但并不能解决所有并发问题。 所以在进行并发编程时仍然要小心谨慎。0 码力 | 117 页 | 2.24 MB | 1 年前3
洛佳 组件化驱动、ROM运行环境与RustSBI配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 拒绝编译,避免不安全行为; • 开源标准抽象的功能,使用抽象规定 的调用方法。本芯片外设专属的功能 也可通过专有函数使用; • 用户代码简短易懂,容易编写和调 试,降低开发成本。 *BL808组件化驱动操作GPIO按钮和灯 组件化外设的分类和设计方法 通 用 连 接 外 设 U A R T 、 S P I 和 I 2 过程宏是卫生宏,完成语法树间的转 换,此处用于将main函数转换为固 件需要的入口函数。 • 包含ABI转换、检查参数等步骤。 • 使用过程宏时,同时使用对应包中的 start初始化代码。start代码无需由 用户编写,而是包含在宏生成的输出 代码中。 • 编译即可获得包含镜像头的固件包, 这是传统开发方法不具备的功能。 多核异构芯片的镜像融合(以BL808为例) 部 分 固 件 调 试 首 先 编 不同等级的上下文保存到不同结构体中,地址存于突 发寄存器,快速处理程序可为完整处理程序提供参数 • 项目地址:https://github.com/YdrMaster/fast- trap 示例:RustSBI原型设计系统选型界面 RustSBI与生态后续引导链 • 对RISC-V UEFI,RustSBI准备好SBI 环境。 • RustSBI充当至关重要的安全 层,并准备好S态软件的环境 • UEFI部分运行在S态0 码力 | 21 页 | 3.12 MB | 1 年前3
Hello 算法 1.1.0 Rust版‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU 算法:在缓存淘汰(LRU)算法中,我们需要快速找到最近最少使用的数据,以及支持快速添加 和删除节点。这时候使用双向链表就非常合适。 双向队列是一种具有更高自由度的队列,它允许在两端进行元素的添加和删除操作。 2. Q & A Q:浏览器的前进后退是否是双向链表实现? 浏览器的前进后退功能本质上是“栈”的体现。当用户访问一个新页面时,该页面会被添加到栈顶;当用户 点击后退按钮时,该页面会从栈顶弹出。使用双向队列可以方便地实现一些额外操作,这个在“双向队列” 章节有提到。 Q:在出栈后,是否需要释放出栈节点的内存? 如果后续仍需 Q:撤销(undo)和反撤销(redo)具体是如何实现的? 使用两个栈,栈 A 用于撤销,栈 B 用于反撤销。 1. 每当用户执行一个操作,将这个操作压入栈 A ,并清空栈 B 。 2. 当用户执行“撤销”时,从栈 A 中弹出最近的操作,并将其压入栈 B 。 3. 当用户执行“反撤销”时,从栈 B 中弹出最近的操作,并将其压入栈 A 。 115 第 6 章 哈希表 Abstract 在0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版‧ 高级数据结构:比如在红黑树、B 树中,我们需要访问节点的父节点,这可以通过在节点中保存一个指 向父节点的引用来实现,类似于双向链表。 ‧ 浏览器历史:在网页浏览器中,当用户点击前进或后退按钮时,浏览器需要知道用户访问过的前一个和 后一个网页。双向链表的特性使得这种操作变得简单。 ‧ LRU 算法:在缓存淘汰(LRU)算法中,我们需要快速找到最近最少使用的数据,以及支持快速添加 和删除节点。这时候使用双向链表就非常合适。 双向队列是一种具有更高自由度的队列,它允许在两端进行元素的添加和删除操作。 2. Q & A Q:浏览器的前进后退是否是双向链表实现? 浏览器的前进后退功能本质上是“栈”的体现。当用户访问一个新页面时,该页面会被添加到栈顶;当用户 点击后退按钮时,该页面会从栈顶弹出。使用双向队列可以方便地实现一些额外操作,这个在“双向队列” 章节有提到。 Q:在出栈后,是否需要释放出栈节点的内存? 如果后续仍需 Q:撤销(undo)和反撤销(redo)具体是如何实现的? 使用两个栈,栈 A 用于撤销,栈 B 用于反撤销。 1. 每当用户执行一个操作,将这个操作压入栈 A ,并清空栈 B 。 2. 当用户执行“撤销”时,从栈 A 中弹出最近的操作,并将其压入栈 B 。 3. 当用户执行“反撤销”时,从栈 B 中弹出最近的操作,并将其压入栈 A 。 115 第 6 章 哈希表 Abstract 在0 码力 | 387 页 | 18.51 MB | 10 月前3
共 24 条
- 1
- 2
- 3













