P.MEM.LFT.01 生命周期参数命名尽量有意义且简洁

【描述】

生命周期参数的命名应该尽量简单,可以使用表达一定语义的缩写。

因为生命周期参数的目的是给编译器使用,用于防止函数中出现悬垂引用。

适当简单的携带语义的缩写,可以最小化对业务代码的干扰。并且在生命周期参数较多的情况下,清晰地表达具体哪个引用属于哪个生命周期。

【反例】


#![allow(unused)]
fn main() {
struct ConstraintGeneration<'a, 'b, 'c> {
    infcx: &'c InferCtxt<'b, 'c>,
    all_facts: &'a mut Option<AllFacts>,
    location_table: &'a LocationTable,
    liveness_constraints: &'a mut LivenessValues<RegionVid>,
    borrow_set: &'a BorrowSet<'c>,
    body: &'c Body<'c>,
}
}

【正例】


#![allow(unused)]
fn main() {
// 增加 'cg 意义的文档注释
/// 'cg = the duration of the constraint generation process itself.
struct ConstraintGeneration<'cg, 'cx, 'tcx> {
    infcx: &'cg InferCtxt<'cx, 'tcx>,
    all_facts: &'cg mut Option<AllFacts>,
    location_table: &'cg LocationTable,
    liveness_constraints: &'cg mut LivenessValues<RegionVid>,
    borrow_set: &'cg BorrowSet<'tcx>,
    body: &'cg Body<'tcx>,
}
}