路不易

Latest

Trait系统的细节:Sized、Dyn Trait、impl Trait、关联类型(Associated Types)

1. Sized:类型大小 底层原理 * 内存对齐:Sized 类型在栈上分配时,编译器必须知道其确切大小和对齐要求 * 类型系统守卫:Rust 默认要求泛型参数满足 T: Sized,因为编译器需要为泛型代码生成具体实现 * DST 的妥协:?Sized 放松约束,允许处理如 [T] 或 dyn Trait 等动态类型 深入示例 // 展示 Sized 的隐式约束 fn generic_fn<T>(t: T) {} // 实际等价于 fn generic_fn<T: Sized>(t: T) // 处理动态类型需要指针包装 fn unsized_types(

By amm

Rust所有权与生命周期底层机制

一、所有权系统(Ownership System) 1. 内存管理基础 * 基于栈(Stack)和堆(Heap)的差异: * 栈:自动管理,FILO结构,存储固定大小类型 * 堆:动态分配,存储不定大小类型,需要显式管理 * Rust 采用"谁创建谁负责释放"的原则,无垃圾回收机制 2. 所有权规则实现 * 每个值有且仅有一个所有者(Owner) * 当值被绑定到变量时,该变量成为值的所有者 * 当所有者离开作用域时,值会被自动释放(调用 drop trait) 3. 移动语义(Move Semantics) * 赋值操作默认执行移动而非拷贝: let s1 = String::from("hello"); let

By amm

© 2025 路不易All rights reserved.

备案号:黔ICP备2025043243号-1 | 公安备案图标 贵公网安备52052402000220号