drain이나 이런거 보면 그냥 self로 받아서 깔끔하게 move하는게 아니라 &mut self로 받은다음에 원본을 빈 컬렉션으로 남기는 식으로 하는거임?

마치 C++ move semantics를 연상시키는...