Hello 算法 1.1.0 Rust版基本数据类型以二进制的形式存储在计算机中。一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。 基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。 ‧ 整数类型 byte 占用 1 字节 = 8 比特,可以表示 28 个数字。 ‧ 整数类型 int 占用 4 字节 = 32 比特,可以表示 232 个数字。 表 3‑1 列举了 Java 中 默认值 整数 byte 1 字节 −27 (−128) 27 − 1 (127) 0 short 2 字节 −215 215 − 1 0 int 4 字节 −231 231 − 1 0 第 3 章 数据结构 hello‑algo.com 55 类型 符号 占用空间 最小值 最大值 默认值 long 8 字节 −263 263 − 1 0 浮点数 float 4 字节 1.175 × 10−38 10−38 3.403 × 1038 0.0f double 8 字节 2.225 × 10−308 1.798 × 10308 0.0 字符 char 2 字节 0 216 − 1 0 布尔 bool 1 字节 false true false 请注意,表 3‑1 针对的是 Java 的基本数据类型的情况。每种编程语言都有各自的数据类型定义,它们的占用 空间、取值范围和默认值可能会有所不同。0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版基本数据类型以二进制的形式存储在计算机中。一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。 基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。 ‧ 整数类型 byte 占用 1 字节 = 8 比特,可以表示 28 个数字。 ‧ 整数类型 int 占用 4 字节 = 32 比特,可以表示 232 个数字。 表 3‑1 列举了 Java 中 整数 byte 1 字节 −27 (−128) 27 − 1 (127) 0 short 2 字节 −215 215 − 1 0 int 4 字节 −231 231 − 1 0 第 3 章 数据结构 www.hello‑algo.com 55 类型 符号 占用空间 最小值 最大值 默认值 long 8 字节 −263 263 − 1 0 浮点数 float 4 字节 1.175 × 10−38 10−38 3.403 × 1038 0.0f double 8 字节 2.225 × 10−308 1.798 × 10308 0.0 字符 char 2 字节 0 216 − 1 0 布尔 bool 1 字节 false true false 请注意,表 3‑1 针对的是 Java 的基本数据类型的情况。每种编程语言都有各自的数据类型定义,它们的占用 空间、取值范围和默认值可能会有所不同。0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版、hpstory、justin‑tse、krahets、night‑cruise、 nuomi1 和 Reanon 完成(按照首字母顺序排列)。感谢他们付出的时间与精力,正是他们确保了各语言代 码的规范与统一。 在本书的创作过程中,我得到了许多人的帮助。 ‧ 感谢我在公司的导师李汐博士,在一次畅谈中你鼓励我“快行动起来”,坚定了我写这本书的决心; ‧ 感谢我的女朋友泡泡作为本书的首位读者 基本数据类型以二进制的形式存储在计算机中。一个二进制位即为 1 比特。在绝大多数现代操作系统中,1 字节(byte)由 8 比特(bit)组成。 基本数据类型的取值范围取决于其占用的空间大小。下面以 Java 为例。 ‧ 整数类型 byte 占用 1 字节 = 8 比特,可以表示 28 个数字。 ‧ 整数类型 int 占用 4 字节 = 32 比特,可以表示 232 个数字。 表 3‑1 列举了 Java 中 默认值 整数 byte 1 字节 −27 (−128) 27 − 1 (127) 0 short 2 字节 −215 215 − 1 0 int 4 字节 −231 231 − 1 0 第 3 章 数据结构 hello‑algo.com 55 类型 符号 占用空间 最小值 最大值 默认值 long 8 字节 −263 263 − 1 0 浮点数 float 4 字节 1.175 × 10−380 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代 码所需要的库叫做 依赖(dependencies))。 最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo read_line 方法返回 Err,则可能是来源于底层操作系统错误的结果。 如果 Result 实例的值是 Ok,expect 会获取 Ok 中的值并原样返回。在本例中,这个值是用户 输入到标准输入中的字节数。 如果不调用 expect,程序也能编译,不过会出现一个警告: $ cargo build Compiling guessing_game v0.1.0 (file:///projects/guessing_game) 你应该能得到不同的随机数,同时它们应该都是在 1 和 100 之间的。干得漂亮! 比较猜测的数字和秘密数字 现在有了用户输入和一个随机数,我们可以比较它们。这个步骤如示例 2-4 所示。注意这段代 码还不能通过编译,我们稍后会解释。 文件名:src/main.rs use std::cmp::Ordering; use std::io; use rand::Rng; fn main() {0 码力 | 562 页 | 3.23 MB | 1 月前3
Rust 程序设计语言简体中文版下编译器将显示的错误信 息。请知悉,如果你输入并运行一个随机示例,它可能无法编译!确保你阅读了示例周围的文 本,以判断你尝试运行的示例是否意在出错。Ferris 也将帮助你区分那些不是意在工作的代 码: Ferris 含义 这段代码无法通过编译! 9/600 Rust 程序设计语言 简体中文版 这段代码会 Panic! 这段代码的运行结果不符合预期。 在大部分情况,我们会指导你将无法通过编译的代码修改为正确版本。 Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代 码所需要的库叫做 依赖(dependencies))。 最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。如果使用 Cargo 来构建 “Hello, world!” 项目,将只会用到 Cargo read_line 方法返回 Err ,则可能是来源于底层操作系统错误的结果。如果 Result 实例的值是 Ok ,expect 会获 取 Ok 中的值并原样返回。在本例中,这个值是用户输入到标准输入中的字节数。 如果不调用 expect ,程序也能编译,不过会出现一个警告: $ cargo build Compiling guessing_game v0.1.0 (file:///projects/guessing_game)0 码力 | 600 页 | 12.99 MB | 1 年前3
Comprehensive Rust(简体中文) 202412target(s) in 0.75s Running `target/debug/exercise` Hello, world! 4. 将 src/main.rs 中 的 样 板 代 码 替 换 为 自 己 的 代 码。例 如,使 用 上 一 页 中 的 示 例,将 src/main.rs 改为: fn main() { println!("Edit me!"); } 5. 使用 cargo takes_u32(y); } 这张幻灯片演示了 Rust 编译器是如何根据变量声明和用法来推导其类型的。 需要重点强调的是这样声明的变量并非像那种动态类型语言中可以持有任何数据的“任何类型”。这种声 明所生成的机器码与明确类型声明完全相同。编译器进行类型推导能够让我们编写更简略的代码。 当整数字面量的类型不受限制时,Rust 默认为 i32。这在错误消息中有时显示为{integer}。同样,浮 点字面量默认为 f64。 “String::new”会返回一个新的空字符串,如果您知道自己想要推送到字符串的数据量,请使用 “String::with_capacity”。 • “String::len”会返回“String”的大小(以字节为单位,可能不同于以字符为单位的长度)。 • “String::chars”会针对实际字符返回一个迭代器。请注意,由于字素簇, “char”可能与人们所认为 的“字符”有所不同。 • 当人们提到字0 码力 | 359 页 | 1.33 MB | 11 月前3
Rust 语言学习笔记中的字符串类型 Go 没有专门的字符类型,存储字符直接使用 byte 来存储,字符串就是一串固 定长度的字符连接起来字符序列。与其他编程语言不同之处在于,Go 的字符串 是字节组成,而其他的编程语言是字符组成。 Go 的字符串可以把它当成字节数组来用,并且是不可变的。 Rust 的字符串底层也是 Vec动态数组,这点和 Go 的字符串有点类似,不同 的是 Go 的字符串是定长的,无法修改的。 18 example 4 hello hello hello world 从上面的例子中,可以看出存储 unicode 字符最大的特点是不同的字符串所占 的字节数不同。例如梵文占 6 个字节,汉字占 3 个字节。 另外 golang 中的 string slice 不能进行 append 操作,可以把它当成一个固定 的 string 类型来使用,例如可以比较二者包含的字符串是否相等。 这表示若 a 成立,则这个就相当于#[cfg(b)]。 5.1.2.5 Linter 参数 目前的 Rust 编译器已自带的 Linter,它可以在编译时静态帮你检测不用的代码、死循环、编 码风格等等。Rust 提供了一系列的属性用于控制 Linter 的行为 allow(C) - 编译器将不会警告对于 C 条件的检查错误。 deny(C) - 编译器遇到违反 C 条件的错误将直接当作编译错误。 0 码力 | 117 页 | 2.24 MB | 1 年前3
基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器 王文庭场景:多⼚商协议快速兼容 geo-distributed + 函数式开发 = 边缘计算 整体架构 • Webassembly,简称wasm • ⽤⼀句话描述,那就是Webassembly是执⾏程序的标准化字节码格式 • Webassembly最初被发明,是⽤于Web浏览器。 • 由W3C⼯作组开发的Web浏览器标准,于2017年11⽉, Chrome,Firefox,Microsoft Edge0 码力 | 31 页 | 3.95 MB | 1 年前3
Borsh 安全高效的二进制序列化Binary Object Representation Serializer for Hashing • 字节级别确定性 • 执行速度快 Borsh • 轻量级 • 每一个对象与其二进制表示之间都存在一个双射映射 • 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash 字节级别确定性 • 在 Rust 中, borsh 并没有使用 serde • 全部逻辑原生实现 • Study Solana 智能合约 Case Study • non self-describing • 保证序列化后的二进制唯一性和确定性 • 主要序列化规则 Borsh 规范 • 整数采用低字节序( little endian) 存储 • 对于动态长度的集合,先用一个 u32 存储集合 size • 对于原本无序的集合(如 hashmap ),存储时使用 key 的字典序排序 Borsh0 码力 | 21 页 | 3.35 MB | 1 年前3
刘用涛 CnosDB时序数据库的Rust实践Discriminator(1) Discriminator(2) 8 i64 f64 f64 16 f64 Rust 中的枚举与 C 语言中的联合体 类似,如左图所示的枚举代码,实际 大小为16字节加8个字节的鉴别器, 总共24字节。 3.2 流式处理 3.2 流式处理 3.3 Rust 的锁 2. 异步死锁检测 https://github.com/tokio-rs/async-backtrace0 码力 | 26 页 | 3.28 MB | 1 年前3
共 20 条
- 1
- 2













