RustBelt - Rust 的形式化语义模型第三届中国 Rust 开发者大会 王俊吉 RustBelt - Rust 的形式化语义模型 Outline Background • RustBelt Project • Rust Types Overview Rust Semantics • Type System • The own Predict • Exclusive Ownership & Mutable Borrow0 码力 | 21 页 | 2.63 MB | 1 年前3
Rust 语言学习笔记1.2 作用域 .............................................................................. 31 3.1.3 移动语义............................................................................ 32 3.1.4 Copy 特性 ... 10.1 Result 与错误处理 ..................................................................... 112 10.1.1 匹配不同的错误 ............................................................... 113 10.1.2 unwrap 与 expect 需要说明的是 if 中条件判断必须是 bool 类型,不能写出 if 5 这种判断条件。 2.2.2 match 语句 Rust 中没有类似于 C 的 switch 关键字,但它有用于模式匹配的 match, 能实现同样的功能,并且强大太多。 match 的使用非常简单,举例如下: let x = 5; match x { 1 => { println0 码力 | 117 页 | 2.24 MB | 1 年前3
Comprehensive Rust(简体中文) 202412. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 III 第二天:上午 56 11 欢迎来到第二天 57 12 模式匹配 58 12.1 Matching Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 12.2 3 所有权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3 19.4 移动语义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 19.5 Clone . . . minutes • Day 2 Morning (2 hours and 55 minutes, including breaks) Segment Duration 欢迎 3 minutes 模式匹配 1 hour 方法和特征 50 minutes 泛型 40 minutes • Day 2 Afternoon (3 hours and 10 minutes, including breaks)0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 程序设计语言 简体中文版 1.85.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 6. 枚举和模式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 19. 模式与模式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 19.2. Refutability(可反驳性): 模式是否会匹配失效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 19.3. 模式语法 . . . . . .0 码力 | 562 页 | 3.23 MB | 27 天前3
Rust 程序设计语言简体中文版..................................................................................... 115 6. 枚举和模式匹配 .................................................................................................. .................................................................................... 446 18. 模式与模式匹配 .................................................................................................. ............................................................... 463 18.2. Refutability(可反驳性): 模式是否会匹配失效 ...................................................... 468 18.3. 模式语法 ..........................0 码力 | 600 页 | 12.99 MB | 1 年前3
新一代分布式高性能图数据库的构建 - 沈游人先水平。” 以终为始,以行为知,这一项目从图计算所面临的挑战出发,解决了大规模图数据所产生 的建模能力不足、结构知识难用、巨量数据难算等技术挑战,实现了大规模复杂异质图数 据的表示学习模型、语义推荐和风险管理关键技术,构建了完整的兼具理论指导与应用检 验的大规模图数据智能分析系统与平台,满足了大数据时代从复杂异质图数据中进行知识 发现的重要需求。最终获得国内外授权发明专利 43 项, CCF 实时图结构预览 • 用户授权管理 • 中文及显示别名支持 图模型设计 WebUI—— 可视化图探索分析 【亮点】 • K 步邻居查询、属性过滤 • 最短路径、全路径分析 • 按实体、边类型匹配查询 • 子图识别、环路识别等在 线图挖掘分析 • 实体、边可视化统计分析 • 树、层次、分组等多种布 局方式 • 基于 D3 自研的万级别实 体展现 可视化图探索分析 AtlasGraph0 码力 | 38 页 | 24.68 MB | 1 年前3
Rust 是否需要另⼀种“⾊彩”的 Future? - 郭⼦兴是否需要另⼀种“⾊彩”的 Future? 标题 Rust 编译器将 async 块翻译成由标准库提供的 Future 类型,⽤户可以⽅便地通过⾃定义 Future 以实现⾮阻塞 的 IO 或并发控制语义。异步执⾏器被允许在任意时刻删除⽣成的 Future 实例以取消正在执⾏的异步操作,但取消 总是⽆副作⽤的吗?Rust 是否需要另⼀种“颜⾊”的 Future 为有副作⽤取消的异步⾏为提供安全保证? () = t2 �� println!("task two completed first"), } } Select: 基于取消的并发控制语义 select! 是常⻅的并发控制语义,它的语义当 其中⼀个分⽀完成时即返回,⽽不必等待所有 Future 实例完成。 async fn listen(listener: TcpListener) { loop }, None �� break, } } } } 取消 Future 的困境 解决了控制语义的问题,我们需要实现 Future 的取消。 async fn listen(listener: TcpListener) { loop { let t1 = listner0 码力 | 19 页 | 7.77 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索IDE:用户体验提升 源于 Rust 强大的编译检查和错误 处理方式, 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github • Paraller • …… IDE 友好的编译器架构 1. 错误恢复: 不完整代码的编译 • 代码补全 • 错误代码的语义分析 2. 增量编译 • 大规模场景下的编译优化和 IDE 性能提升 • 编译粒度: 项目 -> 文件 -> 函数/定义 3. 结构化语义模型(Structured Semantic Model) • Using the tree as a store for semantic0 码力 | 25 页 | 3.50 MB | 1 年前3
Rust语言核心竞争力-庄晓立Very big data in the heap ... ptr cap len ptr cap len 栈(Stack) 堆(Heap) 浅拷贝(Shallow Copy) 附加Move语义 Drop & RAII 变量(bindings)和资源(resources)的关系 Resources: memories, objects, connections, files, sockets0 码力 | 51 页 | 1.09 MB | 1 年前3
Hello 算法 1.2.0 繁体中文 Rust 版nums[i]; } // 直接走訪陣列元素 for num in nums { _count += num; } } 6. 查詢元素 在陣列中查詢指定元素需要走訪陣列,每輪判斷元素值是否匹配,若匹配則輸出對應索引。 因為陣列是線性資料結構,所以上述查詢操作被稱為“線性查詢”。 // === File: array.rs === /* 在陣列中查詢指定元素 */ fn find(nums: 存密碼的雜 湊值。當用戶輸入密碼時,系統會對輸入的密碼計算雜湊值,然後與儲存的雜湊值進行比較。如果兩者 匹配,那麼密碼就被視為正確。 ‧ 資料完整性檢查:資料傳送方可以計算資料的雜湊值並將其一同傳送;接收方可以重新計算接收到的 資料的雜湊值,並與接收到的雜湊值進行比較。如果兩者匹配,那麼資料就被視為完整。 對於密碼學的相關應用,為了防止從雜湊值推導出原始密碼等逆向工程,雜湊演算法需要具備更高等級的安 被新元素使用。這樣做既能保持雜湊表的探測序列不變,又能保證雜湊表的空間使用率。 Q:為什麼線上性探查中,查詢元素的時候會出現雜湊衝突呢? 查詢的時候透過雜湊函式找到對應的桶和鍵值對,發現 key 不匹配,這就代表有雜湊衝突。因此,線性探查 法會根據預先設定的步長依次向下查詢,直至找到正確的鍵值對或無法找到跳出為止。 Q:為什麼雜湊表擴容能夠緩解雜湊衝突? 雜湊函式的最後一步往往是對陣列長度0 码力 | 388 页 | 18.82 MB | 10 月前3
共 15 条
- 1
- 2













