Comprehensive Rust(简体中文) 20241299 19.2 内存管理方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 19.3 所有权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3 19.4 移动语义 . 0); return &point; } • 引用被称为“借用”了其所引用的值,这对于不熟悉指针的学生来说是一个很好的模型:代码可以通 过引用来访问值,但原始变量仍然保有对该值的“所有权”。本课程会在第 3 天详细介绍所有权。 43 • 引用是以指针的形式实现的,其关键优势在于它们可以比其所指的内容小得多。熟悉 C 或 C++ 的学 生会将引用视为指针。本课程的后续部分将介绍 Rust 如何防止因使用原始指针而导致的内存安全 会跟踪所有引用的生命周期,以确保它们存在足够长的时间。在安全的 Rust 中不会出现悬空 引用。x_axis 会返回对 point 的引用,但 point 会在该函数返回时取消分配,因此不会进行编 译。 • 我们会在讲到所有权(ownership)时详细讨论借用(borrow)。 9.2 独占引用 独占引用(也称为可变引用)允许更改其所引用的值。它们的类型为&mut T。 fn main() { let mut point0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 语言学习笔记............................................. 21 第三章 所有权 引用借用 生命周期 ............................................................... 31 3.1 所有权 ...................................................... 3.1 隐式 lifetime ....................................................................... 37 3.4 高级所有权 ................................................................................. 38 3.4.1.函数传递参数和返回参数类似于 ................................................................................... 93 7.2.1 通道与所有权的转移 ............................................................. 94 7.2.2 通道保证发送的顺序 ............0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言简体中文版.................. 62 4. 认识所有权 ............................................................................................................................ 71 4.1. 什么是所有权? .......................... 戏。我们会站在较高的层次介绍一些概念,而后续章节将提供更多细节。如果你希望立刻就动 手实践一下,第 2 章是开始的好地方。第 3 章介绍 Rust 中类似其他编程语言的特性,第 4 章 会学习 Rust 的所有权系统。如果你是一个特别细致的学习者,喜欢在进入下一环节之前学习 每一个细节,你可能会想要跳过第 2 章,直接阅读第 3 章,等到你想要通过项目应用所学到的 细节时再回到第 2 章。 第 5 章讨论结构体(struct)和方法,第 、match 、函数、使用外部 crate 等等, 接下来的几章,你会继续深入学习这些概念。第三章介绍大部分编程语言都有的概念,比如变 量、数据类型和函数,以及如何在 Rust 中使用它们。第四章探索所有权(ownership),这是 一个 Rust 同其他语言大不相同的功能。第五章讨论结构体和方法的语法,而第六章侧重解释 枚举。 41/600 Rust 程序设计语言 简体中文版 3 .0 码力 | 600 页 | 12.99 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.058 4. 认识所有权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.1. 什么是所有权? . . . . . 语言的实战介绍,我们会构建一个猜数字游戏。 我们会站在较高的层次介绍一些概念,而后续章节将提供更多细节。如果你希望立刻就动手实 践一下,第二章是开始的好地方。第三章介绍 Rust 中类似其他编程语言的特性,第四章会学 习 Rust 的所有权系统。如果你是一个特别细致的学习者,喜欢在进入下一环节之前学习每一 个细节,你可能会想要跳过第二章,直接阅读第三章,等到你想要通过项目应用所学到的细节 时再回到第二章。 第五章讨论结构体(stru 新概念:let、match、函数、使用外部 crate 等等, 接下来的几章,你会继续深入学习这些概念。第三章介绍大部分编程语言都有的概念,比如变 量、数据类型和函数,以及如何在 Rust 中使用它们。第四章探索所有权(ownership),这是 一个 Rust 同其他语言大不相同的特性。第五章讨论结构体和方法的语法,而第六章解释枚举。 37/562Rust 程序设计语言 简体中文版 常见编程概念 本章介绍0 码力 | 562 页 | 3.23 MB | 26 天前3
基于静态分析的Rust内存安全缺陷检测研究但一般意义上的指针分析是NP-hard问题 ▪ 智能指针可行,但作为运行时方案,效率低 ▪ Rust在语法设计中引入所有权机制,简化指针分析问题 Rust所有权模型 => XOR Mutability ❑ 一个对象有且只有一个所有者 ❑ 所有权可以转移给其它变量 ▪ 用完不用还 ❑ 所有权可以被其它变量借用 ▪ 用完自动归还 ▪ 只读(immutable)借用:& ▪ 可变(mutable bob = alice; println!("bob:{}", bob); println!("alice:{}", alice); } alice拥有Box对象 转移所有权转移给 bob,alice失去Box 对象的所有权 fn main(){ let mut alice = Box::new(1); let bob = &alice; println!("alice:{}", alice);0 码力 | 28 页 | 1.55 MB | 1 年前3
Rust语言核心竞争力-庄晓立tx(类型是Sender)被move到新的线程; i(类型是i32)被copy到新的线程(逐字节拷贝)。 Ownership(所有权) Owns Owns 所有权转移 Move, Transfer Ownership 产权证 产权证 最后一任主人(所有者) 负责把资源带入坟墓(销毁) Ownership(所有权) pub struct Vec{ ptr: Unique , cap: 变量(bindings)和资源(resources)的关系 Resources: memories, objects, connections, files, sockets, threads, ... 因为有“所有权转移”的存在: 同一个资源可能由变量A持有或变量B持有; 同一个变量可能持有资源也可能不持有资源; 同一时刻有且只有一个变量唯一持有(Owns)某个资源。 持有资源的变量超出作用域或被另赋新值时,自动调用 0 码力 | 51 页 | 1.09 MB | 1 年前3
洛佳 组件化驱动、ROM运行环境与RustSBI准 的 抽 象 设 计 适配embedded-hal等外设功能标准抽象 面 向 功 能 的 外 设 结 构 联合所有权、泛型等,暴露外设所有功能 外 设 及 其 寄 存 器 表 示 封装寄存器、位域表示和数据结构 分享性外设:以GPIO为例 • 从前级环境获取所有权,如从ROM 运行环境的#[entry]获得; • 配置GPIO状态后,只有对应外设类 型允许的操作函数能通过编译,否则 ROM运行环境 第 02 部分 裸机和引导程序的ROM阶段 高级语言环境 初始化bss段、data段, 加载栈寄存器,构成高级 语言运行的最小环境 生成镜像结构 外设和时钟 提供具备所有权的外设 列表,提供ROM初始化 完成的时钟配置 编译时生成镜像头,通 常包含处理器配置、时 钟和闪存配置等部分 #[entry] 过程宏 • 过程宏是卫生宏,完成语法树间的转 换,此处用于将main函数转换为固0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust API可靠性分析与验证08/22/rust-on-linux-1.html Rust China Conf 2021 – 2022, Online, China Rust静态检查与动态检查 静态检查: • 基于所有权和生命周期的内存管理模型:内存安全 • 通过trait来确保代码符合某些规范:Send, Sync, Unpin等 动态检查: • 数组越界 • 整数溢出 • Unicode字符边界 Rust 生成API调用序列 反向搜索 合并与优 化 模糊测试用例程序 短序列 长序列 最优序列 集合 合并 优化 构建API依赖图 合成合法的测试 函数 Rust库源代码 泛型函数 单态化 所有权检查 开源于https://github.com/Artisan-Lab/RULF Rust China Conf 2021 – 2022, Online, China 结论以及未来的发展 10 码力 | 13 页 | 1.68 MB | 1 年前3
Real world Rust
- Why and how we use Rust in TiKV内存安全 ○ Build-in RAII / Ownership ○ No NULL ptr ● 万物皆有所有权 ○ Ownership system ○ Mutable and immutable reference ● 线程安全 ● 不相信程序员 内存安全 ● 所有权 ● RAII / Lifetime fn do_vec(v: Vec) {} fn main() 0 码力 | 29 页 | 506.53 KB | 1 年前3
简谈 Rust 与国密 TLS - 王江桐2023, Shanghai, China 类型安全 内存安全 并发安全 静态类型 类型大小 类型推导 强类型 借用检查 智能指针 && RAII 生命周期 所有权系统 Channel 共享状态 所有权 Send && Sync Trait 编译器静态检查 高可靠 1 2 3 ü 无GC、无Runtime、无解释器 ü 零成本抽象 ü 后端LLVM优化 ü 支持C-ABI的FFI方式0 码力 | 44 页 | 3.70 MB | 1 年前3
共 13 条
- 1
- 2













