Rust 语言学习笔记栈内存从高位地址向下增长,且栈内存分配是连续的,一般操作系统对栈内存 大小是有限制的,Linux/Unix 类系统上面可以通过 ulimit 设置最大栈空间大 小,所以 C 语言中无法创建任意长度的数组。在 Rust 里,函数调用时会创建 一个临时栈空间,调用结束后 Rust 会让这个栈空间里的对象自动进 入 Drop 流程,最后栈顶指针自动移动到上一个调用栈顶,无需程序员手动 干预,因而栈内存申请和释放是非常高效的。 相对地,堆上内存则是从低位地址向上增长,堆内存通常只受物理内存限制, 而且通常是不连续的,一般由程序员手动申请和释放的,如果想申请一块连续 内存,则操作系统需要在堆中查找一块未使用的满足大小的连续内存空间,故 其效率比栈要低很多,尤其是堆上如果有大量不连续内存时。另外内存使用完 也必须由程序员手动释放,不然就会出现内存泄漏,内存泄漏对需要长时间运 行的程序(例如守护进程)影响非常大。 rust “有无限的大小”。其原因是 List 的一个成员被定 义为是递归的:它直接存放了另一个相同类型的值。这意味着 Rust 无法计算 为了存放 List 值到底需要多少空间。让我们一点一点来看:首先了解一下 Rust 如何决定需要多少空间来存放一个非递归类型。 box 指针和下面例子的 b 有点类似。 pub fn rust_ptr_test() { println!("rust_ptr_test");0 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 202412进行裸机(嵌入式)开发。课程内容涵盖微控制器和应用 处理器。 • 并发:为期一天的课程,介绍 Rust 中的并发性。我们将涵盖传统并发(使用线程和互斥锁进行抢占 式调度)和 async/await 并发(使用 futures 进行协作式多任务处理)。 非目标 Rust 是一门庞大的语言,短短几天的课程无法覆盖其全部内容。本课程不包括以下内容: • 学习如何开发宏:请参阅 Rust Book 的第 19.5 章 和 Rust Unicode 标量类型 char 'a'、' α '、' ∞' 布尔值 bool true、false 各类型占用的空间为: • iN, uN 和 fN 占用 N 位, • isize 和 usize 占用一个指针大小的空间, • char 占用 32 位空间, • bool 占用 8 位空间。 上表中还有一些未提及的语法: • 数字中的所有下划线均可忽略,它们只是为了方便辨识。因此,1_000 可以写为 then they wouldn’t be the same type as they would if they were all defined in an enum. • Rust 使用最小的空间来存储判标识。 – 如有必要,它会存储所需最小大小的整数 – 如果允许的变体值未涵盖所有位模式,则它将使用无效的位模式对判别标识进行编码(“小众 优化”)。例如,Option<&u8> 存储的要么是指向整数的指针,要么是0 码力 | 359 页 | 1.33 MB | 10 月前3
Hello 算法 1.2.0 简体中文 Rust 版19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5 小结 . . . 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 数据结构(data structure)是组织和存储数据的方式,涵盖数据内容、数据之间关系和数据操作方法,它具 有以下设计目标。 第 1 章 初识算法 www.hello‑algo.com 14 ‧ 空间占用尽量少,以节省计算机内存。 ‧0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.1.0 Rust版19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5 小结 . . . 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 数据结构(data structure)是计算机中组织和存储数据的方式,具有以下设计目标。 ‧ 空间占用尽量少,以节省计算机内存。 第 1 章 初识算法 hello‑algo.com 140 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.0.0 Rust版19 2.3 时间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.4 空间复杂度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.5 小结 . . . 前置条件 你需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0.1.2 内容结构 本书的主要内容如图 0‑1 所示。 ‧ 复杂度分析:数据结构和算法的评价维度与方法。时间复杂度和空间复杂度的推算方法、常见类型、示 例等。 ‧ 数据结构:基本数据类型和数据结构的分类方法。数组、链表、栈、队列、哈希表、树、堆、图等数据 结构的定义、优缺点、常用操作、常见类型、典型应用、实现方法等。 ‧ 问题是明确的,包含清晰的输入和输出定义。 ‧ 具有可行性,能够在有限步骤、时间和内存空间下完成。 ‧ 各步骤都有确定的含义,在相同的输入和运行条件下,输出始终相同。 1.2.2 数据结构定义 「数据结构 data structure」是计算机中组织和存储数据的方式,具有以下设计目标。 ‧ 空间占用尽量少,以节省计算机内存。 第 1 章 初识算法 hello‑algo.com 140 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言简体中文版................................................................................ 352 14.3. Cargo 工作空间 .................................................................................................. 与此类控制相关的所有繁琐细 节。 Rust 适合哪些人 Rust 因多种原因适合许多人。让我们看看几个最重要的群体。 开发者团队 Rust 已证明是一个对于具有不同系统编程知识水平的大型开发团队协作而言,非常高效的工 具。底层代码容易出现各种微妙的错误,在大多数其他语言中,这些错误只能通过广泛的测试 和经验丰富的开发者的仔细审核代码来捕捉。在 Rust 中,编译器充当了守门员的角色,拒绝 编译 我们将数组的值写成在方括号内,用逗号分隔: 文件名:src/main.rs fn main() { let a = [1, 2, 3, 4, 5]; } 当你想要在栈(stack)而不是在堆(heap)上为数据分配空间(第四章将讨论栈与堆的更多 内容),或者是想要确保总是有固定数量的元素时,数组非常有用。但是数组并不如 vector 类 型灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型。当不0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 14.3. Cargo 工作空间 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 控制相关的所有繁琐细 节。 Rust 适合哪些人 Rust 因多种原因适合许多人。让我们看看几个最重要的群体。 开发者团队 Rust 已被证明是一个对于具有不同系统编程知识水平的大型开发团队协作而言,非常高效的 工具。底层代码容易出现各种微妙的错误,在大多数其他语言中,这些错误只能通过广泛的测 试和经验丰富的开发者的仔细审核代码来捕捉。在 Rust 中,编译器充当了守门员的角色,拒 绝编译 我们将数组的值写成在方括号内,用逗号分隔的列表: 文件名:src/main.rs fn main() { let a = [1, 2, 3, 4, 5]; } 当你想要在栈(stack)而不是在堆(heap)上为数据分配空间(第四章将讨论栈与堆的更多 内容),或者是想要确保总是有固定数量的元素时,数组非常有用。但是数组并不如 vector 类 型灵活。vector 类型是标准库提供的一个 允许 增长和缩小长度的类似数组的集合类型。当不0 码力 | 562 页 | 3.23 MB | 28 天前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验Project Activity Tariq Share NS 3 Docker Container Kubernetes Pod 轻松创建⽆限量的隔离集成测试环境 ⽀持微服务架构体系和多⼈协作联调测试 Kayn Sona Riven Event Account Project Activity Tariq Share Redis ETCD 可让您完全跳过镜像构建, Cloud-accelerated container builds up to 20x faster ✨ ⽆需配置环境,⽀持多种编程语⾔和框架 ? 轻松创建⽆限量的隔离集成测试环境 ☁ ⽀持微服务架构体系和多⼈协作联调测试 ⚡ 本地开发实时部署到运程集群 ? 交互式运⾏实例快照,可⼀键分享! ? 可插拔的⽣态应⽤市场,全⽅位提升效率 ? Amphitheatre Cloud 按需付费,开箱即⽤0 码力 | 34 页 | 10.81 MB | 1 年前3
秘猿先锋-文愿-Axon 应用链框架的 Rust 开发实践测试、调试难度大 • 可维护性,开发完成后,各个模块需要维护、升级和改进 • 可扩展性 • 高性能 • 高并发 • 高可靠性 • 代码管理 • … 大型项目的开发难点 ■ 抽象 ■ 便于协作开发 ■ 易于测试 优点 Mempool Traits 实现 实现 测试代码 目录 1. Axon 简介 2. 大型 Rust 项目应用 Adapter 模式 3. 使用过程宏的监控埋点开发实践0 码力 | 32 页 | 3.63 MB | 1 年前3
Rust HTTP 协议栈在终端通信场景的实践 - 胡凯Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText Transfer Protocol)是一种用于分布式、协作式和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China0 码力 | 26 页 | 1.25 MB | 1 年前3
共 16 条
- 1
- 2













