Por que [SomeStruct] não é conversível em [Qualquer]?

Considere o seguinte:

struct SomeStruct {}

var foo: Any!
let bar: SomeStruct = SomeStruct()

foo = bar // Compiles as expected

var fooArray: [Any] = []
let barArray: [SomeStruct] = []

fooArray = barArray // Does not compile; Cannot assign value of type '[SomeStruct]' to type '[Any]'

Eu tenho tentado encontrar a lógica por trás disso, mas sem sorte. Vale ressaltar que se você alterar a estrutura para uma classe, ela funcionará perfeitamente.

Sempre se pode adicionar uma solução alternativa e mapear cada objeto do fooArray e convertê-los no tipo Any, mas esse não é o problema aqui. Estou procurando uma explicação sobre por que isso está se comportando como é.

Alguém pode explicar isso?

Essa questão me levou a esse problema.

questionAnswers(2)

yourAnswerToTheQuestion