Convert between BigInts and BigUints
Fix pretty-printing of empty impl items
Convert between BigInts, BigUints, ints, and uints

Previously, conversion to ints, uints, and BigUints clamped the value
within the range of that datatype. With this commit, conversion
overflows fail the task. To handle overflows gracefully, use the new
to_*_opt() methods.
Don't fail in TcpStream.flush
extra: use a mutex to wrap linenoise calls and make them threadsafe.

Fixes #3921.
extra: stop rl from leaking each line that is read.
extra: improvements & bug fixes to rl.

- Removes a layer of indirection in the storage of the completion
  callback.
- Handles user tab completion in a task in which `complete` hasn't been
  properly. Previously, if `complete` was called in one task, and `read`
  called in another, attempting to get completions would crash. This
  makes the completion handlers non-ambiguously task-local only.
- Fix a mismatch in return values between the Rust code and linenoise.
Add a test for extra::rl.

This test has to be run by a human, to check inputs etc. Fortunately, it
won't bitrot (syntactically, or type-check-ly; it might bitrot
semantically), as it is designed so that the test runner compiles it with
`--cfg robot_mode`, which is used to disable the actual running of code.
Add HashSet::with_capacity_and_keys() function

This function can be use to create HashSets before the tls is
initialized.
Properly encode/decode structural variants.
Rename encode_struct_field_names to encode_struct_fields to reflect what it actually does
Add a test for cross-crate struct variants
Replace dashes in the filenames of the new tests with underscores to avoid issues with Windows
Fix whitespace in tests
xfail-fast the new test for windows compatibility
auto merge of #9064 : SiegeLord/rust/external_struct_variants, r=luqmana

Fixes issues #5557 and #8746.

This patch adds an additional family for struct-like variants, and encodes some struct-like aspects of such variants that can then be properly decoded by resolve.

Note that I am not 100% sure how this fix works, but it fixes the issue without breaking any of the tests on my machine.
Support character range patterns (e.g. [0-9], [a-z]), like other globs do.
auto merge of #9014 : dcrewi/rust/convert-between-bigints, r=anasazi
Fix the empty-impl tests

Use an existing type so that it compiles.
Rendezvous stream for synchronous channel messaging