Allow Eager Drops

Allow the compiler to drop objects that are no longer used before the
end of their scope. Rust's type system ensures that objects aren't
dropped too soon.  The programmer can explicitly specify an object's
lifetime if necessary.  Removes the need for drop flags.

[Rendered View](https://github.com/rkjnsn/rfcs/blob/allow-eager-drops/active/0000-allow-eager-drops.md)
Could you give a concrete example of this? The ony way one object could have a lifetime dependency on another object would be if it either owns that object, in which case there can be no problem, or it has a reference, in which case the current borrow checker should catch any problems. Obviously I am misunderstanding something here, and I think an example would help.