humpty_dumpty

Crates.iohumpty_dumpty
lib.rshumpty_dumpty
version0.0.1
sourcesrc
created_at2015-05-10 11:20:07.05484
updated_at2015-12-11 23:53:29.779383
descriptionA plugin to prevent certain types from being dropped, thus making them linear
homepage
repositoryhttps://github.com/Manishearth/humpty_dumpty
max_upload_size
id2072
size29,977
Philip Munksgaard (Munksgaard)

documentation

README

Humpty Dumpty

Build Status

The goal of this library is to be able to define types that cannot be implicitly dropped except in controlled situations.

A sketch of the design can be found here. The design does not handle branches, though it can be extended to do so. It's also a bit different from what I finally implemented

The idea is, that for a type that is marked #[drop_protection], only functions annotated with #[allowed_on_protected] can use these, and each local must be dropped with a function marked #[allowed_drop] before its scope finishes.

Current status: Is able to track such types and report on their usage. Maintains a list of what has been dropped properly to detect implicit drops.

Some missing (but planned) functionality:

  • Cannot yet handle conditional drops, i.e. those in branches.

  • Cannot yet handle any bindings other than a let binding

  • Allowed functions cannot yet take &/&mut inputs

  • Cannot yet mark method calls as allowed

To test, run cargo run --example test, or even better rustc examples/test.rs -L target (after building). The latter is better because it will rebuild every time, and we're only interested in build output.

Commit count: 99

cargo fmt