为什么 sort(by:) 在 MutableCollection 的扩展中不可用?

Why is sort(by:) unavailable in extensions to MutableCollection?

我正在尝试为 MutableCollection 编写一个扩展,需要使用 sort(by:) 方法进行排序,但它似乎不适用于 MutableCollection 扩展,尽管此方法是为 MutableCollection 定义的(至少根据 Apple Developer Documentation)。

这是一个非常人为和简化的例子:

struct MyType { var priority:Int }
extension MutableCollection where Element == MyType {
    mutating func sort() { self.sort(by: { [=10=].priority > .priority }) }
}

但是这样就报错了Argument passed to call that takes no arguments,这是因为此时我自己的sort()方法被看到了,似乎根本没有sort(by:)的意识。

如果我将扩展名更改为 Array,那么扩展名就可以正常工作,但当然它是特定于类型的,而不是应用于符合 MutableCollection 的所有类型,这是我真正想要的(为了尽可能通用)。

为什么此时我无法看到和使用 sort(by:) 方法,有什么方法可以解决这个问题吗?

文档有点误导。为了就地排序,集合也必须是 RandomAccessCollection:

struct MyType { var priority:Int }
extension MutableCollection where Self: RandomAccessCollection, Element == MyType {
    mutating func sort() { self.sort(by: { [=10=].priority > .priority }) }
}