Remove `virtual` structs from the language
Remove `virtual` struct tests
Remove `virtual` structs from the reference
auto merge of #17952 : jakub-/rust/remove-virtual-structs, r=eddyb

Closes #17861.
Never expand specialized columns that only contain wild patterns in them

Doing so would incur deeply nested expansion of the tree with no useful
side effects. This is problematic for "wide" data types such as structs
with dozens of fields but where only a few are actually being matched or bound.
Most notably, matching a fixed slice would use a number of stack frames that
grows with the number of elements in the slice.

Fixes #17877.
libtime: `strftime` and `strptime` return type changed to `Result<String, ParseError>`.

`strftime` currently returns a `String`. This does not indicate that
this function may return an error due to to a malformed format string.
This change introduces a `ParseError` enum which indicates the type of
error that occurred. The return type of `strptime` was also changed to
use this new enum instead of returning `Result<String, String>`. Now,
all instances where `strftime` was used need to have their return value
checked to see if it were valid or not.

[breaking-change]
auto merge of #17944 : jakub-/rust/issue-17877, r=alexcrichton

Fixes #17877.
auto merge of #17467 : hatahet/rust/mybranch, r=alexcrichton



[breaking-change]