Fix an ICE with error types in a vec

Closes #16783
Forbid ~str and ~[]

This corrects a rebasing error. Also adds a test so it won't happen again.
Forbid the Sized bound on unsized types

closes #16800
Relax lifetime bounds on Reader/Writer impls for trait boxes

Cargo needs this to be able to instantiate `TerminfoTerminal<Box<Writer+'a>>`
for 'a other than 'static.
Modifications to liblibc for raw/custom socket support.
num: implement `Hash` for `Complex` and `Ratio`
complex: use `///...` instead of `/**...*/` for comment
Detect a traits being used as structs in check_expr_with_unifier

Fixes #16750
Fixes #15812
Added cfail test
Changed error to 'use of trait `{}` as a struct constructor'
Fix win64 regression introduced by #15773

Signed-off-by: Peter Atashian <retep998@gmail.com>
Remove the branch merging optimisations for slice patterns

They were only correct in the simplest case. Some of the optimisations
are certainly possible but should be introduced carefully and only
when the whole pattern codegen infrastructure is in a better shape.

Fixes #16648.
Defailbloat fail!(string)
Allow ExprLit expression macros to be used in patterns.
gensym each test re-export module individually

Fixes #16597
test: Fix the tcp-accept-stress test

It was previously asserted that each thread received at least one connection,
but this is not guaranteed to always be the case due to scheduling. This test
also deadlocked on failure due to a lingering reference to the sending half of
the channel, so that reference is now also eagerly dropped so the test can fail
properly if something bad happens.

Closes #16872
Address review comments, add tests
&mut [T] now implements Collection. Fixes #16896
Fix whitespace and missing parentheses.
auto merge of #16894 : alexcrichton/rust/issue-16872, r=huonw

It was previously asserted that each thread received at least one connection,
but this is not guaranteed to always be the case due to scheduling. This test
also deadlocked on failure due to a lingering reference to the sending half of
the channel, so that reference is now also eagerly dropped so the test can fail
properly if something bad happens.

Closes #16872
Rename `RawPtr::to_option()` to `RawPtr::as_ref()`

As outlined in

  https://aturon.github.io/style/naming/conversions.html

`to_` functions names should only be used for expensive operations.
Thus `to_option` is better named `as_option`. Also, putting type
names into method names is considered bad style; what the user is
really trying to get is a reference. This `as_ref` is even better.

Also, we are missing a mutable version of this method. So add a
new trait `RawMutPtr` with a corresponding `as_mut` methode.

Finally, there is a bug in the signature of `to_option` which has
been around since lifetime elision: originally the returned reference
had 'static lifetime, but since the elision changes this become
the lifetime of the raw pointer (which does not make sense, since
the pointer lifetime and referent lifetime are unrelated). Fix
the bug to return a reference with a fresh lifetime (which will
be inferred from the calling context).

[breaking-change]