Las estructuras pueden implementar interfaces, llamadas protocolos en Swift. Puede tener un parámetro, variable o campo / miembro que sea un protocolo y, debido a que varias estructuras diferentes, sin mencionar las clases, puede implementar ese mismo protocolo, una vez que pase (o asigne) una estructura a un parámetro de protocolo (o variable o campo), los detalles de qué estructura podría haber sido se "pierde" (re: tiempo de compilación) y la tabla de testigos de protocolo entra en juego (re: tiempo de ejecución).
Puede obtener más información sobre el diseño de memoria Swift .
Similar sucede en C #, con el que estoy más familiarizado. Una estructura pasada o asignada a una variable de interfaz o campo / miembro está encuadrada, y la representación en caja de la estructura coincide con la de las representaciones de clase, lo que significa que hay una tabla v para estructuras en caja.
Esperaría que C # y Swift hagan llamadas directas cuando el elemento se conoce en tiempo de compilación como una estructura, y que use vtable dispatch cuando en tiempo de compilación, el elemento solo se conoce como una interfaz.