As estruturas podem implementar interfaces, chamadas protocolos no Swift. Você pode ter um parâmetro, variável ou campo / membro que seja um protocolo e, porque várias estruturas diferentes, para não mencionar classes, podem implementar o mesmo protocolo, depois de passar (ou atribuir) uma estrutura a um parâmetro de protocolo (ou variável ou campo), as especificidades de qual estrutura ela poderia ter sido "perdida" (tempo de re: compilação) e a tabela testemunha de protocolo entra em jogo (re: tempo de execução).
Você pode aprender mais sobre o layout da memória Swift .
Semelhante acontece em C #, com o qual estou mais familiarizado. Uma estrutura passada ou atribuída a uma variável de interface ou campo / membro é fornecida em caixa e a representação em caixa da estrutura corresponde à das representações de classe, o que significa que existe uma tabela de estruturas para estruturas em caixa.
Eu esperaria que o C # e o Swift fizessem chamadas diretas quando o item for conhecido no tempo de compilação como uma estrutura e usem o envio de vtable quando, no tempo de compilação, o item seja conhecido apenas como interface.