This is true, but in the example of building a linked list from Ben Cohen here: Noncopyable Generics in Swift: A Code Walkthrough
He produces a List type defined like:
struct List<Element: ~Copyable>: ~Copyable {
struct Node: ~Copyable {
var element: Element
var next: Link
}
typealias Link = Box<Node>?
var head: Link = nil
}
and uses Optional as the enum of choice here to wrap the box in which is not an indirect enum. This design certainly could’ve defined its own Link type that was explicitly indirect, but now it loses out on all of the API that already exists on Optional.