I’d deprecate Option::take instead.
mem::replace is usable enough.
Additinally, there’s nothing specific to “object” or to construction in this operation to make it a method.
So if we will have this operation, I’d prefer it to be global in mem namespace:
mem::take<T: Default>(ptr: &mut T) { ... }
(Same way forget or drop are global functions, not instance methods.)