Saltar al contenido

Lectura de código real

Leer el contrato de una biblioteca

La implementación pública de la operación push de Vec comprueba si necesita capacidad antes de escribir el nuevo elemento. Su contrato importa más que asumir una dirección estable.

Fragmento abreviado de la condición, con el resto explicado en palabras:

Texto
si longitud = capacidad:    crecer antes de escribir

El comentario es didáctico. Después del crecimiento se obtiene el destino para la escritura y se actualiza la longitud. No se debe conservar un puntero previo suponiendo que sobrevivió a esa operación.

Referencia: biblioteca estándar de Rust, módulo alloc::vec, función push.

Un vector tiene longitud 7 y capacidad 7, y duplica al crecer. Se llama push dos veces seguidas. ¿Cuántas veces entra en la rama «crecer antes de escribir»?