欢迎访问 内存溢出 —— 独立后端与系统工程技术博客

专注于分布式系统、Linux内核、数据库存储与后端工程实践

Rust 生命周期进阶:HRTB 与 PhantomData 应用

发表于:|最后更新:|分类:系统编程|阅读:3608 次

Rust 生命周期系统在复杂泛型场景下需要更高级的工具,高阶 trait 约束(HRTB)与 PhantomData 是其中两个重要机制。

一、高阶 trait 约束(HRTB)

rust
fn apply<F>(f: F)
where
    F: for<'a> Fn(&'a str) -> &'a str,
{
    let s = String::from("hello");
    let result = f(&s);
    println!("{}", result);
}

for<'a> 表示对任意生命周期都成立,常用于闭包与 trait 对象场景,避免生命周期被过早固定。

二、PhantomData 的用途

rust
use std::marker::PhantomData;

struct Tagged<T> {
    value: u64,
    _marker: PhantomData<T>,
}

PhantomData<T> 不占用运行时空间,但向编译器声明该结构体“拥有”类型 T,用于表达所有权、生命周期约束与型变(Variance)关系。