#diagnostics #borrow #panic #interior-mutability

no-std hv-lease-tracker

支持 no-std 的借用来源跟踪,用于实现内部可变性原语时的更好诊断

1 个不稳定版本

0.1.0 2021年11月12日

#906并发


用于 hv-cell

MIT/Apache

8KB
77

重型租赁追踪器 - 追踪借用来源,用于运行时借用失败的诊断

LeaseTracker 实现了一个简单的系统,使用守卫和 Rust 的 core::panic::Location API 来追踪并提供了关于内部可变性原语失败时的借用来源的信息。

no-std 兼容;使用 allocArc 和自旋锁用于非常短的临界区。

许可证

根据以下任一许可证授权

任选其一。

贡献

除非你明确声明,否则根据 Apache-2.0 许可证定义的,任何有意提交以包含在工作中的贡献,都应按照上述方式双许可,不附加任何额外条款或条件。


lib.rs:

重型租赁追踪器 - 追踪借用并提供有关运行时借用/别名违规的更多有用错误的函数

  • LeaseTracker 类型,用于智能单元格,如 hv-cellAtomicRefCell(仅在启用 track-leases 功能的调试中)
  • Lease 类型,用于智能引用/守卫类型,如 hv-cellAtomicRef/AtomicRefMutArcRef/ArcRefMut
  • OpenLease 类型,表示动态借用的来源,用于诊断用途

no_std 兼容,但需要 alloc 才能使用 ArcCowString,并在内部使用自旋锁来同步添加/删除 LeaseTrackerOpenLease

hv-lease-tracker 并不是一个高性能的 crate,如果借用性能至关重要,那么在发布构建中可能需要禁用。它仅用于诊断信息。

依赖项

~195KB