Earlier quoted context omitted.
> Does a drop somehow say something to the type system as well, disallowing reads and writes afterwards? Yes.
The other poster says it proves operations won't happen again - does it do both?
1. Give ownership away to something else.
2. Free the object at the end of the scope.
In order to do anything to the object, you give up ownership to the function that does it (which can then give it back, if it doesn't need ownership of the value any more and doesn't want to free it itself). This even applies to the `drop` function, which just takes ownership and then does nothing whatsoever to the passed-in value, allowing it to go out of scope immediately. So once you've called `drop(foo)`, you no longer own the value and so can't give it away to any reading or writing function, and you can't drop it for the very same reason.