error[E0072]: recursive types `Baz` and `Foo` have infinite size
  --> $DIR/issue-17431-2.rs:1:1
   |
LL | struct Baz { q: Option<Foo> }
   | ^^^^^^^^^^             --- recursive without indirection
...
LL | struct Foo { q: Option<Baz> }
   | ^^^^^^^^^^             --- recursive without indirection
   |
help: insert some indirection (e.g., a `Box`, `Rc`, or `&`) to break the cycle
   |
LL ~ struct Baz { q: Option<Box<Foo>> }
LL |
LL | 
LL ~ struct Foo { q: Option<Box<Baz>> }
   |

error: aborting due to previous error

For more information about this error, try `rustc --explain E0072`.