Вопрос проверяет понимание value semantics в Swift и принципов размещения данных в памяти.
Короткий ответ
Обычный enum в Swift является value type, поэтому его размер должен быть известен заранее. Это необходимо для корректного размещения значений на стеке или внутри других типов. Если размер нельзя определить, компилятор не сможет выделить память. Именно поэтому рекурсивные enum требуют использования indirect.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.