不支持使用 'Protocol' 作为符合协议 'Protocol' 的具体类型

Using 'Protocol' as a concrete type conforming to protocol 'Protocol' is not supported

我有以下 swift 代码:

protocol Animal {
var name: String { get }
}

struct Bird: Animal {
    var name: String
    var canEat: [Animal]
}

struct Mammal: Animal {
    var name: String
}

extension Array where Element: Animal {
    func mammalsEatenByBirds() -> [Mammal] {
        var eatenMammals: [Mammal] = []
        self.forEach { animal in
            if let bird = animal as? Bird {
                bird.canEat.forEach { eatenAnimal in
                    if let eatenMammal = eatenAnimal as? Mammal {
                        eatenMammals.append(eatenMammal)
                    } else if let eatenBird = eatenAnimal as? Bird {
                        let innerMammals = eatenBird.canEat.mammalsEatenByBirds()
                        eatenMammals.append(contentsOf: innerMammals)
                    }
                }
            }
        }
        return eatenMammals
    }
}

编译器不让我编译抱怨: 不支持使用 'Animal' 作为符合协议 'Animal' 的具体类型 在我递归调用函数 mammalsEatenByBirds()

我看到了其他一些答案,但无法将我的问题与其中任何一个联系起来。

修复正在将 Element: Animal 替换为 Element == Animal