You cannot define a struct (or enum) Foo that requires an instance of Foo
in order to make a new Foo value. This is because there would be no way a
first instance of Foo could be made to initialize another instance!
Here’s an example of a struct that has this problem:
struct Foo { x: Box<Foo> } // errorRunOne fix is to use Option, like so:
struct Foo { x: Option<Box<Foo>> }RunNow it’s possible to create at least one instance of Foo: Foo { x: None }.