#drop #linear #plugin

nightly humpty_dumpty

一个插件,用于防止某些类型被丢弃,从而使它们变为线性

1 个不稳定版本

使用旧的 Rust 2015

0.0.1 2015年5月10日

#93 in #drop

MPL-2.0 许可证

20KB
378 代码行,不包括注释

Humpty Dumpty

Build Status

此库的目标是能够定义只能在受控情况下隐式丢弃的类型。

设计草案可以在这里找到 here。该设计尚未处理分支,尽管可以扩展以实现这一点。它也与最终实现略有不同。

想法是,对于被标记为 #[drop_protection] 的类型,只有带有 #[allowed_on_protected] 注解的函数可以使用它们,并且每个局部变量 必须 在其作用域结束时通过带有 #[allowed_drop] 标记的函数来丢弃。

当前状态:能够跟踪此类类型并报告其使用情况。维护一个记录已正确丢弃内容的列表,以检测隐式丢弃。

一些缺失但计划中的功能

  • 尚不能处理条件丢弃,即在分支中。
  • 尚不能处理任何除 let 绑定以外的绑定
  • 允许的函数尚不能接受 &/&mut 输入
  • 尚不能将方法调用标记为允许

要测试,请运行 cargo run --example test,或者更好的是 rustc examples/test.rs -L target(在构建后)。后者更好,因为它会在每次运行时重新构建,而我们只对构建输出感兴趣。

没有运行时依赖