如何实现符合相互关联协议之一的通用 class?

How to implement a generic class that conforms one of the mutually associated protocols?

我有两个协议。其中每一个(x)包含associatedtype需要确认另一个协议(y)当associatedtype这个协议(y) 等于 Self (x).

protocol B {
    associatedtype AA: A
        where AA.BB == Self
}

protocol A {
    associatedtype BB: B
        where BB.AA == Self
}

按如下方式实现这些协议是没有问题的:

class AAA: A {
    typealias BB = BBB
}

class BBB: B {
    typealias AA = AAA
}

但我无法将其中之一实现为通用的。

class AAA<BBBB: B>: A {
    typealias BB = BBBB
}

class BBB: B {
    typealias AA = AAA<BBB>
}

结果,我报错了:

'A' requires the types 'AAA' and 'BBBB.AA' be equivalent

并注意:

requirement specified as 'Self' == 'Self.BB.AA' [with Self = AAA]

听起来可以理解。我将约束添加到我的通用 class.

class AAA<BBBB: B>: A where BBBB.AA == AAA {
    typealias BB = BBBB
}

结果

error: type 'AAA' does not conform to protocol 'A'
note: protocol requires nested type 'BB'; do you want to add it?

error: type 'BBB' does not conform to protocol 'B'
note: protocol requires nested type 'AA'; do you want to add it?

我所有的尝试都没有成功,他们只是更改了错误消息。
有可能吗?怎么样?

以我目前的知识,我认为不可能做你想做的事。 我正在寻找更多信息,并找到了一些关于为什么不需要它的信息。

Why Swift doesn't have F-Bounded.

Support for F-bounded polymorphism?