Guide: generics
Allow generic foreign functions.

Generic extern functions written in Rust have their names mangled, as well as their internal clownshoe __rust_abi functions. This allows e.g. specific monomorphizations of these functions to be used as callbacks.

Closes #12502.
Add new tests for extern and foreign fns and name mangling.
make rustdoc more responsive

* move some sidebar contents to a title bar when small
* inline description toggle when small
* make out-of-band and in-band content share space, rather than float and clash
* compress wording of out-of-band content to avoid line-wrap as much as possible
libcollections: Fix RingBuf growth for non-power-of-two capacities
Fix typo in the tutorial
windows: Fix several tests on 64-bit.

Signed-off-by: Peter Atashian <retep998@gmail.com>
rustc: gensym the module names for --test to avoid introducing user-accessible names.

This requires avoiding `quote_...!` for constructing the parts of the
__test module, since that stringifies and reinterns the idents, losing
the special gensym'd nature of them. (#15962.)
Use system rustc if configured with --enable-local-rust

This commit makes the configuration system autodetect a rustc that
is already installed and use that instead of downloading a snapshot.
fix grammar in Vec.retain's doc comment
Rename `Share` to `Sync`

This leaves the `Share` trait at `std::kinds` via a `#[deprecated]` `pub use`
statement, but the `NoShare` struct is no longer part of `std::kinds::marker`
due to #12660 (the build cannot bootstrap otherwise).

All code referencing the `Share` trait should now reference the `Sync` trait,
and all code referencing the `NoShare` type should now reference the `NoSync`
type. The functionality and meaning of this trait have not changed, only the
naming.

Closes #16281
[breaking-change]
auto merge of #15831 : rpjohnst/rust/generic-foreign-fns, r=alexcrichton

This allows for things like this:

    extern "C" fn callback<T>(t: T) { /* ... */ }
    extern "C" {
        fn take_callback(c: extern fn(i32));
    }

and later:

    take_callback(callback::<i32>);

Closes #12502.
Guide: closures
auto merge of #16317 : adrienbrault/rust/patch-1, r=kballard
Fix typo
Guide: tasks
Guide: strings
windows: Fix INVALID_HANDLE_VALUE
Made INVALID_HANDLE_VALUE actually a HANDLE.
Removed all useless casts during INVALID_HANDLE_VALUE comparisons.

Signed-off-by: Peter Atashian <retep998@gmail.com>
Remove spawn-stack-too-big.rs, which is too flaky.
auto merge of #16334 : nikomatsakis/rust/mission-snapshot, r=achrichto