Lectura de código real
Una transferencia en la biblioteca estándar
Este fragmento procede de core::mem::take; se omiten atributos de documentación y estabilidad:
pub fn take<T: Default>(dest: &mut T) -> T { replace(dest, T::default())}Lee la entrada y la salida: recibe acceso mutable a un lugar, instala allí un valor por defecto y devuelve el valor anterior por propiedad. Default es el contrato necesario para construir el reemplazo.
take no necesita que T implemente Clone. Tampoco deja el lugar vacío o sin inicializar. La operación sirve cuando tienes que sacar un valor y mantener válido el contenedor.
Fuente: código de Rust 1.85.0, core/mem/mod.rs. Fragmento inspeccionado, no ejecutado.