error[E0391]: unsupported cyclic reference between types/traits detected | note: the cycle begins when computing layout of `S`... note: ...which then requires computing layout of `std::option::Option<::It>`... note: ...which then requires computing layout of `::It`... = note: ...which then again requires computing layout of `S`, completing the cycle. error: aborting due to previous error