I should add the following to SlotMap and DenseSlotMap (name up for debate):
fn insert_detached(&mut self) -> K;
This will return a key which is immediately in a detached state that can later be passed to reattach.
With this you can build your own insert_with_key but without being forced into a callback structure.