Comprehensive Rust(简体中文) 2024125 }), ]; for pet in pets { println!("Hello, who are you? {}", pet.talk()); } } 以下是分配 pets 后的内存布局: Stack Heap .- - - - - - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - -. : : : : 请注意,Rust 的 String 不会直接映射到 std::string。导致这种情况的原因有以下几种: – std::string 不遵循 String 所需的 UTF-8 不变性。 – 这两种类型的内存布局不同,因此无法直接在语言之间进行传递。 – std::string 需要与 Rust 的移动语义不匹配的 move 构造函数,因此 std::string 无 法按值传递给 Rust。 215 37 FFI 调用;而手动实现绑定一般需要自行编写这种顶级的自由 函数) • 该工具和库可以处理一系列核心类型,例如: – &[T] 可以跨 FFI 边界进行传递,即使它无法保证任何特定的 ABI 或内存布局一致无误。进行 手动绑定时,必须手动解构 std::span/ &[T],并根据指针和长度进行重新构建,但这 很容易出错,因为每种语言对于空 slice 的表示方式略有不同 – 系统对 s 0 码力 | 359 页 | 1.33 MB | 10 月前3
Comprehensive Rust(繁体中文)C++ 方法;手動繫結會需要手動編寫這類頂層的、可自由使用的函式 • 這項工具和程式庫可處理一組核心型別,例如: – &[T] 傳遞時可以跨越 FFI 邊界,但無法保證任何特定 ABI 或記憶體布局。使用手動繫結時, std::span/&[T] 必須從一個指標和長度去手動解構並重新建構。這麼做很容易出錯, 因為每種語言各以略微不同的方式表示空切片 – std::unique_ptr< allow_unsafe = true? 籠統的答案是根據一般 Rust 標準,任何 C/C++ 程式碼都不「安全」。從 Rust 來回呼叫 C/C++ 可能會對記 憶體執行任何作業,進而破壞 Rust 本身資料布局的安全性。在 C/C++ 互通性中如果出現「過多」unsafe 關鍵字,可能會傷害這類關鍵字的訊噪比,且具有爭議性,但嚴格來說,在 Rust 二進位檔中導入任何外來 程式碼,都可能對 Rust 造成非預期行為。 only used in tests. 舉例來說: [crate.my-new-crate] group = 'test' # only used in test code 視 Crate 原始碼布局而定,您可能也需要使用這個檔案指定其 ‘LICENSE 檔案的位置。 稍後我們會看到一些其他您需在這個檔案中設定的項目,才能解決問題。 46.3 下載 Crate gnrt 這項工具瞭解如何下載 0 码力 | 358 页 | 1.41 MB | 10 月前3
Comprehensive Rust(繁体中文) 202406C++ 方法;手動繫結會需要手動編寫這類頂層的、可自由使用的函式 • 這項工具和程式庫可處理一組核心型別,例如: – &[T] 傳遞時可以跨越 FFI 邊界,但無法保證任何特定 ABI 或記憶體布局。使用手動繫結時, std::span/&[T] 必須從一個指標和長度去手動解構並重新建構。這麼做很容易出錯, 因為每種語言各以略微不同的方式表示空切片 – std::unique_ptr< allow_unsafe = true? 籠統的答案是根據一般 Rust 標準,任何 C/C++ 程式碼都不「安全」。從 Rust 來回呼叫 C/C++ 可能會對記 憶體執行任何作業,進而破壞 Rust 本身資料布局的安全性。在 C/C++ 互通性中如果出現「過多」unsafe 關鍵字,可能會傷害這類關鍵字的訊噪比,且具有爭議性,但嚴格來說,在 Rust 二進位檔中導入任何外來 程式碼,都可能對 Rust 造成非預期行為。 only used in tests. 舉例來說: [crate.my-new-crate] group = 'test' # only used in test code 視 Crate 原始碼布局而定,您可能也需要使用這個檔案指定其 ‘LICENSE 檔案的位置。 稍後我們會看到一些其他您需在這個檔案中設定的項目,才能解決問題。 46.3 下載 Crate gnrt 這項工具瞭解如何下載 0 码力 | 356 页 | 1.41 MB | 1 年前3
Rust HTTP 协议栈在终端通信场景的实践 - 胡凯2023, Shanghai, China Rust 与 HTTP 协议 以上 Rust HTTP 库主要支持的场景特点: ➢ 并发量、吞吐量需求较高 ➢ 网络环境稳定 ➢ 不太需要体现交互界面 ➢ 不太关注资源使用 比较适合构建浏览器、大型 WEB 服务器等。 终端 HTTP 通信场景浅析 Part 03 探讨终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题 Rust 支持用户设置连接和请求的超时时间:给请求的各个区间设置定时器,以及时检测网络变化。 Rust China Conf 2022 – 2023, Shanghai, China Rust 与终端 HTTP 通信场景结合 提供用户界面表现的相关接口: ➢ 暂停、停止、重试、显示回调:利用 Rust 闭包、trait 实现下载操作回调。方便上层在传输过程中操作 传输行为。 Rust China Conf 2022 – 20230 码力 | 26 页 | 1.25 MB | 1 年前3
刘用涛 CnosDB时序数据库的Rust实践Rust • 高性能:无 GC 实时控制 • 安全:内存安全 线程安全 • 表达能力强:支持范型,match 表达式 3. Rust 使用经验分享 3.1 内存布局 offset Integer Float Complex 0 Discriminator(0) Discriminator(1) Discriminator(2) 8 i64 f64 f640 码力 | 26 页 | 3.28 MB | 1 年前3
王宜国 - 基于 Rust 编程语⾔构建 Amphitheatre CLI Desktop Server 的全平台实践经验Controller 及资源操作 Operator (CRD Controller) Cluster CRD reconcile Reconcile Period (60s) Kubernetes 资源布局示意 kube-rs: Kubernetes 资源操作 使⽤⾃定义资源时,通过 kube-derive 的 proc_macros ⾃动⽣成代码。 得益于 Kubernetes 抽象的 CRUD0 码力 | 34 页 | 10.81 MB | 1 年前3
KCL: Rust 在编译器领域的实践与探索组织应用程序资源,并在整个交付过程中通过身份确保安 全 3.为 Kubernetes 和云精简应用交付工作流,并提供开发友 好的体验 基于 Platform as Code (平台服务即代码)理念,研发者 可以用统一的组织和操作界面定义应用交付生命周期,充分 利用Kubernetes和云的混合能力,通过端到端的交付工作 流程,真正实现集中定义、随处交付。 KusionStack 架构 • KCL:面向应用研发者的 配置策略专用高级编程语0 码力 | 25 页 | 3.50 MB | 1 年前3
洛佳 组件化驱动、ROM运行环境与RustSBI不同等级的上下文保存到不同结构体中,地址存于突 发寄存器,快速处理程序可为完整处理程序提供参数 • 项目地址:https://github.com/YdrMaster/fast- trap 示例:RustSBI原型设计系统选型界面 RustSBI与生态后续引导链 • 对RISC-V UEFI,RustSBI准备好SBI 环境。 • RustSBI充当至关重要的安全 层,并准备好S态软件的环境 • UEFI部分运行在S态0 码力 | 21 页 | 3.12 MB | 1 年前3
Rust 语言学习笔记型的内存其实是被分配在堆上的。换句话说,我们可以很轻松的将一个 Vec move 出作用域而不必担心消耗,因为数据实际上不会被复制。 对比一下 Vec和 Vec > 内存布局 Vec (stack) (heap) ┌──────┐ ┌───┐ │ vec1 │──→│ 1 │ └──────┘ ├───┤ │ 0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言简体中文版需垃圾回收(garbage collector)即可保障内存安全,因此理解 Rust 中所有权如何工作是十 分重要的。本章,我们将讲到所有权以及相关功能:借用(borrowing)、slice 以及 Rust 如 何在内存中布局数据。 71/600 Rust 程序设计语言 简体中文版 4 . 1 . 什 么 是 所 有 权 ? 什么是所有权? ch04-01-what-is-ownership0 码力 | 600 页 | 12.99 MB | 1 年前3
共 11 条
- 1
- 2













