Updated with DrainFilter struct
Updated with DrainFilter struct

The previous implementation did not match vec's drain filter's drop semantics. As per
`amanieu`'s suggestion, added a DrainFilter which implements drop so that it removes the
items which don't satisfy the predicate.

rust-lang/hashbrown,rust-lang/hashbrown