Playground se bloquea por tipo de valor recursivo

Xcode playground se bloquea para este código, si en el proyecto impide la compilation.

Estoy tratando de declarar simplemente una estructura simple:

struct Node<T> { let value: T var next: Node<T>? init(_ value: T) { self.value = value next = nil } } 

Si hago eso en el parque infantil XCode, recibo el siguiente post de error: La comunicación con el service de patio de juegos se interrumpió inesperadamente.

Si declaro esta estructura en un file separado en XCode, el proyecto no puede comstackrse. Todo lo que obtengo es en este caso Comando falló debido a la señal: Fallo de segmentación: 11 .

puede alguien ayudarme con esto? ¿Hay alguna solución? Cualquier ayuda muy apreciada.

Citando la documentation rápida, "Las estructuras siempre se copyn cuando se pasan por su código y no utilizan el recuento de references". [1]

Una list enlazada que está intentando lograr funciona almacenando un puntero o reference al siguiente nodo en el nodo actual. De esta manera, cada nodo tiene el mismo tamaño. La estructura de Swift, por otro lado, no es tipo de reference. El tamaño de cada nodo será diferente según cuántos nodos tenga que almacenar de forma recursiva.

Una forma de lograr lo que está tratando de hacer con struct es usar UnsafeMutablePointer . No necesito advertirte porque hacerlo rápido te hace escribir "inseguro" cada pocas líneas.

 struct Node<T> { var x: T // Setting pointer type to <Node<T>> compiles, but infinite loops on runtime (Swift 1.2) var next: UnsafeMutablePointer<Void> } var second = Node(x: 2, next: nil) var first = Node(x: 1, next: &second) print(unsafeBitCast(first.next, UnsafeMutablePointer<Node<Int>>.self).memory.x) // Prints 2 

[1] https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ClassesAndStructures.html