Rust 语言学习笔记Rust 是一门系统级编程语言,被设计为保证内存和线程安全,并防止段错误。 作为系统级编程语言,它的基本理念是 “零开销抽象”。理论上来说,它的速 度与 C / C++ 同级。 Rust 可以被归为通用的、多范式、编译型的编程语言,类似 C 或者 C++。与 这两门编程语言不同的是,Rust 是线程安全的! Rust 编程语言的目标是,创建一个高度安全和并发的软件系统。它强调安全性、 并发和内存控制。尽管 借用了 C 和 C++ 的语法,它不允许空指针和悬 挂指针,二者是 C 和 C++ 中系统崩溃、内存泄露和不安全代码的根源。 Rust 中有诸如 if else 和循环语句 for 和 while 的通用控制结构。和 C 和 C++ 风格的编程语言一样,代码段放在花括号中。 Rust 使用实现(implementation)、特征(trait)和结构化类型 (structured type)而 trait 里面的 clone 方 法究竟会执行什么操作,则是取决于程序员自己写的逻辑。一般情况下,clone 方法应该执行一个“深拷贝”操作,但这不是强制的,如果你愿意,也可以在 里面启动一个人工智能程序,都是有可能的。 5.如果你确实需要 Clone trait 执行“深拷贝”操作,编译器帮我们提供了一 个工具,我们可以在一个类型上添加#[derive(Clone)],来让编译器帮我们自0 码力 | 117 页 | 2.24 MB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐传输层密码协议(TLCP):TLCP 协议,参考 TLS 1.2 规范,基本兼容 GM/T 0024-2014 且废弃此版本,对于密码算法进行了更新,使用更安全的密码算法; • RFC 8998:基于 RFC 8446,扩展通用 TLS 1.3,增加国密套件支持,声明 SM4_GCM_SM3 、 SM4_CCM_SM3 以及 SM2 单证书机制在 TLS 1.3 中的使用; • 当前 360 安全浏览器、奇安信可信浏览器等产品已支持 Your Own Crypto: An Empirical Study of Vulnerabilities in Cryptographic Libraries”,MIT; • 对于8个大型、通用、开源的 C 与 C++ 密码库进行调研; • 现有的问题在于: • 密码库导致的一些错误,除了本身包含的一些算法错误以及内存错误,其他的一些问题出在用户的使用错 误,即文档、API、等相关说明的缺失; SM4GCMSM3 • Sm2国密双证书 • Sm2 GMT ECDHE • Sm2ECC • 国际通用密码套 • 单证书机制 • Resumption + Ticket机制 • SM4GCMSM3 • Sm2国密单/双证书 • Sm2 IEEE ECDHE • Sm2ECC 1 2 3 • 国际通用密码套 • 单证书机制 • Resumption + Ticket机制 • SM4GCMSM30 码力 | 44 页 | 3.70 MB | 1 年前3
Hello 算法 1.1.0 Rust版的驱动下,一个大而全的字符集 Unicode 应运而 生。 Unicode 的中文名称为“统一码”,理论上能容纳 100 多万个字符。它致力于将全球范围内的字符纳入统一 的字符集之中,提供一种通用的字符集来处理和显示各种语言文字,减少因为编码标准不同而产生的乱码问 题。 自 1991 年发布以来,Unicode 不断扩充新的语言与字符。截至 2022 年 9 月,Unicode 已经包含 149186 个 字符,包括各种语言的字符、符号甚至表情符号等。在庞大的 Unicode 字符集中,常用的字符占用 2 字节, 有些生僻的字符占用 3 字节甚至 4 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 从兼容性的角度看,UTF‑8 的通用性最佳,许多工具和库优先支持 UTF‑8 。 第 3 章 数据结构 hello‑algo.com 63 3.4.5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑160 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版的驱动下,一个大而全的字符集 Unicode 应运而 生。 Unicode 的中文名称为“统一码”,理论上能容纳 100 多万个字符。它致力于将全球范围内的字符纳入统一 的字符集之中,提供一种通用的字符集来处理和显示各种语言文字,减少因为编码标准不同而产生的乱码问 题。 自 1991 年发布以来,Unicode 不断扩充新的语言与字符。截至 2022 年 9 月,Unicode 已经包含 149186 个 字符,包括各种语言的字符、符号甚至表情符号等。在庞大的 Unicode 字符集中,常用的字符占用 2 字节, 有些生僻的字符占用 3 字节甚至 4 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 从兼容性的角度看,UTF‑8 的通用性最佳,许多工具和库优先支持 UTF‑8 。 第 3 章 数据结构 www.hello‑algo.com 63 3.4.5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版驱动下,一个大而全的字符集 Unicode 应运而 生。 「Unicode」的中文名称为“统一码”,理论上能容纳 100 多万个字符。它致力于将全球范围内的字符纳入统 一的字符集之中,提供一种通用的字符集来处理和显示各种语言文字,减少因为编码标准不同而产生的乱码 问题。 自 1991 年发布以来,Unicode 不断扩充新的语言与字符。截至 2022 年 9 月,Unicode 已经包含 149186 个 字符,包括各种语言的字符、符号甚至表情符号等。在庞大的 Unicode 字符集中,常用的字符占用 2 字节, 有些生僻的字符占用 3 字节甚至 4 字节。 Unicode 是一种通用字符集,本质上是给每个字符分配一个编号(称为“码点”),但它并没有规定在计算机 中如何存储这些字符码点。我们不禁会问:当多种长度的 Unicode 码点同时出现在一个文本中时,系统如 何解析字符?例如给定一个长度为 表示英文字符非常高效,因为它仅需 1 字节;使用 UTF‑16 编码某些 非英文字符(例如中文)会更加高效,因为它仅需 2 字节,而 UTF‑8 可能需要 3 字节。 从兼容性的角度看,UTF‑8 的通用性最佳,许多工具和库优先支持 UTF‑8 。 第 3 章 数据结构 hello‑algo.com 63 3.4.5 编程语言的字符编码 对于以往的大多数编程语言,程序运行中的字符串都采用 UTF‑160 码力 | 383 页 | 17.61 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0需要一个当我们处理完 String 时将内存返回给分配器的方法。 第一部分由我们完成:当调用 String::from 时,它的实现 (implementation) 请求其所需的内 存。这在编程语言中是非常通用的。 然而,第二部分实现起来就各有区别了。在有 垃圾回收(garbage collector,GC)的语言中, GC 记录并清除不再使用的内存,而我们并不需要关心它。在大部分没有 GC 的语言中,识别 注解,将会出现一个编译时错误。要学习如何为你的 类型添加 Copy 注解以实现该 trait,请阅读附录 C 中的 “可派生的 trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32。 • 布尔类型,bool,它的值是 deref coercions 的优势,这个特性我们将在“函 数和方法的隐式 Deref 强制转换”章节中介绍。定义一个获取字符串 slice 而不是 String 引用 的函数使得我们的 API 更加通用并且不会丢失任何功能: 文件名:src/main.rs fn main() { let my_string = String::from("hello world"); // `first_word`0 码力 | 562 页 | 3.23 MB | 1 月前3
Comprehensive Rust(简体中文) 20241214.5 impl Trait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 14.6 练习:通用 min 函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 14.6.1 解答 . . . . . . . about 50 minutes. It contains: Slide Duration 方法 10 minutes 特征(Trait) 15 minutes 派生特征 3 minutes 练习:通用日志 20 minutes 13.1 方法 Rust 允许您将函数与新类型相关联。您可以使用“impl”块来执行此操作: struct Race { name: String, laps: VecIt contains: Slide Duration 泛型函数 5 minutes 泛型类型 10 minutes 特征边界 10 minutes impl Trait 5 minutes 练习:通用 min 函数 10 minutes 14.1 泛型函数 Rust supports generics, which lets you abstract algorithms or data structures 0 码力 | 359 页 | 1.33 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Rust 版的驅動下,一個大而全的字符集 Unicode 應運而 生。 Unicode 的中文名稱為“統一碼”,理論上能容納 100 多萬個字元。它致力於將全球範圍內的字元納入統一 的字符集之中,提供一種通用的字符集來處理和顯示各種語言文字,減少因為編碼標準不同而產生的亂碼問 題。 自 1991 年釋出以來,Unicode 不斷擴充新的語言與字元。截至 2022 年 9 月,Unicode 已經包含 149186 個 字元,包括各種語言的字元、符號甚至表情符號等。在龐大的 Unicode 字符集中,常用的字元佔用 2 位元 組,有些生僻的字元佔用 3 位元組甚至 4 位元組。 Unicode 是一種通用字符集,本質上是給每個字元分配一個編號(稱為“碼點”),但它並沒有規定在計算機 中如何儲存這些字元碼點。我們不禁會問:當多種長度的 Unicode 碼點同時出現在一個文字中時,系統如何 解析字元?例如給定一個長度為 表示英文字元非常高效,因為它僅需 1 位元組;使用 UTF‑16 編碼某 些非英文字元(例如中文)會更加高效,因為它僅需 2 位元組,而 UTF‑8 可能需要 3 位元組。 從相容性的角度看,UTF‑8 的通用性最佳,許多工具和庫優先支持 UTF‑8 。 第 3 章 資料結構 www.hello‑algo.com 63 3.4.5 程式語言的字元編碼 對於以往的大多數程式語言,程式執行中的字串都採用0 码力 | 388 页 | 18.82 MB | 10 月前3
Rust 程序设计语言简体中文版需要一个当我们处理完 String 时将内存返回给分配器的方法。 第一部分由我们完成:当调用 String::from 时,它的实现 (implementation) 请求其所需的内 存。这在编程语言中是非常通用的。 然而,第二部分实现起来就各有区别了。在有 垃圾回收(garbage collector,GC)的语言中, GC 记录并清除不再使用的内存,而我们并不需要关心它。在大部分没有 GC 的语言中,识别 的复制都可以被认为是对运行时性能影响较小的。 变量与数据交互的方式(二):克隆 如果我们 确实 需要深度复制 String 中堆上的数据,而不仅仅是栈上的数据,可以使用一个 叫做 clone 的通用函数。第五章会讨论方法语法,不过因为方法在很多语言中是一个常见功 能,所以之前你可能已经见过了。 这是一个实际使用 clone 方法的例子: # fn main() { let s1 = 你 的类型添加 Copy 注解以实现该 trait,请阅读附录 C 中的 “可派生的 trait”。 那么哪些类型实现了 Copy trait 呢?你可以查看给定类型的文档来确认,不过作为一个通用的 规则,任何一组简单标量值的组合都可以实现 Copy ,任何不需要分配内存或某种形式资源的 类型都可以实现 Copy 。如下是一些 Copy 的类型: • 所有整数类型,比如 u32 。 •0 码力 | 600 页 | 12.99 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索重写的 LSP 极大的提升了用户体验 端到端响应时间: 6s -> 100 ms 04 更多的探索 CompilerBase: 通用编译器组件 IDE 友好的编译器架构 RustCodeBook: Rust源码解读 Compiler Base: 更通用的编译器组件 KCL Source Code AST LLVM IR Native/WASM Smart Contract0 码力 | 25 页 | 3.50 MB | 1 年前3
共 13 条
- 1
- 2













