Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 8.2. 使用字符串储存 UTF-8 编码的文本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 中,创建自定义类型需要用到结构体和枚举。 第七章介绍 Rust 的模块(module)系统,其中的私有性规则用来组织代码和公开的 API(应 用程序接口)。第八章讨论标准库提供的常见集合数据结构,例如 Vector(向量)、字符串和 Hash Map(散列表)。第九章探索 Rust 的错误处理的理念与技术。 第十章深入介绍泛型(generic)、Trait 和生命周期(lifetime),这些功能让你能够定义适用 于多种类 在 Windows 上,输入命令 .\main.exe,而不是 ./main: > rustc main.rs > .\main Hello, world! 不管使用何种操作系统,终端应该打印字符串 Hello, world!。如果没有看到这些输出,回到 安装部分的 “故障排除” 小节查找有帮助的方法。 如果 Hello, world! 出现了,恭喜你!你已经正式编写了一个 Rust 程序。现在你成为一名0 码力 | 562 页 | 3.23 MB | 27 天前3
Rust 语言学习笔记(a, b); } 2.4.2 原生类型 在所有 rust 的类型中,比较复杂的是字符串类型。当然不仅仅在 rust 中,包 括 golang 等其它语言中,字符串类型和字符类型都是值得推敲的地方。 在本部分内容中,单独拿出字符类型和字符串类型放到最后进行讨论。 字符类型和字符串类型最好和其它语言对比讨论,例如 go。 2.4.2.1 bool 类型 Rust 自带了 2.4.2.9 字符串类型 如果要说 rust 的字符串类型,就不得不先提 go 的字符串类型。 2.4.2.9.1 Golang 中的字符串类型 Go 没有专门的字符类型,存储字符直接使用 byte 来存储,字符串就是一串固 定长度的字符连接起来字符序列。与其他编程语言不同之处在于,Go 的字符串 是字节组成,而其他的编程语言是字符组成。 Go 的字符串可以把它当成字节数组来用,并且是不可变的。 的字符串可以把它当成字节数组来用,并且是不可变的。 Rust 的字符串底层也是 Vec动态数组,这点和 Go 的字符串有点类似,不同 的是 Go 的字符串是定长的,无法修改的。 Rust 和 Go 原声在字符串里面支持 unicode,这就导致了很大某方面的不同。 Go 中字符串的例子: package main import ( "fmt" "reflect" ) func 0 码力 | 117 页 | 2.24 MB | 1 年前3
Hello 算法 1.1.0 Rust版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版对数阶常见于分治算法。例如归并排序,输入长度为 ? 的数组,每轮递归将数组从中点处划分为两半,形成 高度为 log ? 的递归树,使用 ?(log ?) 栈帧空间。 再例如将数字转化为字符串,输入一个正整数 ? ,它的位数为 ⌊log10 ?⌋ + 1 ,即对应字符串长度为 ⌊log10 ?⌋ + 1 ,因此空间复杂度为 ?(log10 ? + 1) = ?(log ?) 。 2.4.4 权衡时间与空间 理想情况下,我 空间、取值范围和默认值可能会有所不同。 ‧ 在 Python 中,整数类型 int 可以是任意大小,只受限于可用内存;浮点数 float 是双精度 64 位;没 有 char 类型,单个字符实际上是长度为 1 的字符串 str 。 ‧ C 和 C++ 未明确规定基本数据类型的大小,而因实现和平台各异。表 3‑1 遵循 LP64 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑16 或 UTF‑32 这类等长编码。在等长编码下, 我们可以将字符串看作数组来处理,这种做法具有以下优点。 ‧ 随机访问:UTF‑16 编码的字符串可以很容易地进行随机访问。UTF‑8 是一种变长编码,要想找到第 ? 个字符,我们需要从字符串的开始处遍历到第 ? 个字符,这需要 ?(?) 的时间。 ‧ 字符计数:与随机访问类似,计算0 码力 | 383 页 | 17.61 MB | 1 年前3
Comprehensive Rust(简体中文) 20241244 9.3 切片 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 9.4 字符串 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 9.5 练习:几何图形 . . 开头。 • 像 C 和 C++ 一样,块由花括号分隔。 • main 函数是程序的入口点。 • Rust 有卫生宏 (hygienic macros),println! 就是一个例子。 • Rust 字符串是 UTF-8 编码的,可以包含任何 Unicode 字符。 This slide tries to make the students comfortable with Rust code. They standard output, applying formatting described in std::fmt. • format!(format, ..) 的用法与 println! 类似,但它以字符串形式返回结果。 • dbg!(expression) 会记录表达式的值并返回该值。 • todo!() 用于标记尚未实现的代码段。如果执行该代码段,则会触发 panic。 • unreachable0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust算法教程 The Algos (algorithms)20:44 Rust算法教程 The Algos (algorithms) https://algo.course.rs/print.html 47/270 字符串 字符串相关的算法往往和⼦串匹配、顺序调整相关,如何⾼效的处理字符串,有时会成为⼀个程序 性能的关键。 2024/3/7 20:44 Rust算法教程 The Algos (algorithms) https://algo.course0 码力 | 270 页 | 8.46 MB | 1 年前3
基于静态分析的Rust内存安全缺陷检测研究Memory Reclaim ❑ Unsound Function ❑ Unsound Generic or Trait Auto Memory Reclaim问题:示例1 创建一个临时字符串s 通过unsafe将v指向临时内存 返回v 自动析构s,造成悬空指针v 访问v造成use-after-free 从Rust MIR分析Auto Memory Reclaim问题 _1 =0 码力 | 28 页 | 1.55 MB | 1 年前3
共 8 条
- 1













