Auto merge of #46538 - frewsxcv:rollup, r=frewsxcv
Rollup of 7 pull requests - Successful merges: #46136, #46378, #46431, #46483, #46495, #46502, #46512 - Failed merges:
This commit is contained in:
commit
833785b090
@ -336,7 +336,7 @@ will run all the tests on every platform we support. If it all works out,
|
||||
|
||||
Speaking of tests, Rust has a comprehensive test suite. More information about
|
||||
it can be found
|
||||
[here](https://github.com/rust-lang/rust-wiki-backup/blob/master/Note-testsuite.md).
|
||||
[here](https://github.com/rust-lang/rust/blob/master/src/test/COMPILER_TESTS.md).
|
||||
|
||||
### External Dependencies
|
||||
[external-dependencies]: #external-dependencies
|
||||
|
@ -12,7 +12,7 @@
|
||||
use std::iter::Iterator;
|
||||
use std::vec::Vec;
|
||||
use std::collections::BTreeMap;
|
||||
use std::__rand::{Rng, thread_rng};
|
||||
use rand::{Rng, thread_rng};
|
||||
use test::{Bencher, black_box};
|
||||
|
||||
macro_rules! map_insert_rand_bench {
|
||||
|
@ -8,7 +8,7 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
use std::__rand::{thread_rng};
|
||||
use rand::{thread_rng};
|
||||
use std::mem;
|
||||
use std::ptr;
|
||||
|
||||
|
@ -596,9 +596,9 @@ mod builtin {
|
||||
|
||||
/// Unconditionally causes compilation to fail with the given error message when encountered.
|
||||
///
|
||||
/// For more information, see the [RFC].
|
||||
/// For more information, see the documentation for [`std::compile_error!`].
|
||||
///
|
||||
/// [RFC]: https://github.com/rust-lang/rfcs/blob/master/text/1695-add-error-macro.md
|
||||
/// [`std::compile_error!`]: ../std/macro.compile_error.html
|
||||
#[stable(feature = "compile_error_macro", since = "1.20.0")]
|
||||
#[macro_export]
|
||||
#[cfg(dox)]
|
||||
|
@ -91,8 +91,12 @@ pub const fn null<T>() -> *const T { 0 as *const T }
|
||||
pub const fn null_mut<T>() -> *mut T { 0 as *mut T }
|
||||
|
||||
/// Swaps the values at two mutable locations of the same type, without
|
||||
/// deinitializing either. They may overlap, unlike `mem::swap` which is
|
||||
/// otherwise equivalent.
|
||||
/// deinitializing either.
|
||||
///
|
||||
/// The values pointed at by `x` and `y` may overlap, unlike `mem::swap` which
|
||||
/// is otherwise equivalent. If the values do overlap, then the overlapping
|
||||
/// region of memory from `x` will be used. This is demonstrated in the
|
||||
/// examples section below.
|
||||
///
|
||||
/// # Safety
|
||||
///
|
||||
@ -100,6 +104,40 @@ pub const fn null_mut<T>() -> *mut T { 0 as *mut T }
|
||||
/// as arguments.
|
||||
///
|
||||
/// Ensure that these pointers are valid before calling `swap`.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// Swapping two non-overlapping regions:
|
||||
///
|
||||
/// ```
|
||||
/// use std::ptr;
|
||||
///
|
||||
/// let mut array = [0, 1, 2, 3];
|
||||
///
|
||||
/// let x = array[0..].as_mut_ptr() as *mut [u32; 2];
|
||||
/// let y = array[2..].as_mut_ptr() as *mut [u32; 2];
|
||||
///
|
||||
/// unsafe {
|
||||
/// ptr::swap(x, y);
|
||||
/// assert_eq!([2, 3, 0, 1], array);
|
||||
/// }
|
||||
/// ```
|
||||
///
|
||||
/// Swapping two overlapping regions:
|
||||
///
|
||||
/// ```
|
||||
/// use std::ptr;
|
||||
///
|
||||
/// let mut array = [0, 1, 2, 3];
|
||||
///
|
||||
/// let x = array[0..].as_mut_ptr() as *mut [u32; 3];
|
||||
/// let y = array[1..].as_mut_ptr() as *mut [u32; 3];
|
||||
///
|
||||
/// unsafe {
|
||||
/// ptr::swap(x, y);
|
||||
/// assert_eq!([1, 0, 1, 2], array);
|
||||
/// }
|
||||
/// ```
|
||||
#[inline]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub unsafe fn swap<T>(x: *mut T, y: *mut T) {
|
||||
|
@ -153,12 +153,12 @@
|
||||
//! }
|
||||
//! ```
|
||||
//!
|
||||
//! # The `?` syntax
|
||||
//! # The question mark operator, `?`
|
||||
//!
|
||||
//! When writing code that calls many functions that return the
|
||||
//! [`Result`] type, the error handling can be tedious. The [`?`]
|
||||
//! syntax hides some of the boilerplate of propagating errors up the
|
||||
//! call stack.
|
||||
//! [`Result`] type, the error handling can be tedious. The question mark
|
||||
//! operator, [`?`], hides some of the boilerplate of propagating errors
|
||||
//! up the call stack.
|
||||
//!
|
||||
//! It replaces this:
|
||||
//!
|
||||
|
@ -982,7 +982,7 @@ Available lint options:
|
||||
println!("Lint groups provided by rustc:\n");
|
||||
println!(" {} {}", padded("name"), "sub-lints");
|
||||
println!(" {} {}", padded("----"), "---------");
|
||||
println!(" {} {}", padded("warnings"), "all built-in lints");
|
||||
println!(" {} {}", padded("warnings"), "all lints that are set to issue warnings");
|
||||
|
||||
let print_lint_groups = |lints: Vec<(&'static str, Vec<lint::LintId>)>| {
|
||||
for (name, to) in lints {
|
||||
|
@ -179,7 +179,6 @@ nav.sub {
|
||||
top: 0;
|
||||
height: 100vh;
|
||||
overflow: auto;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.sidebar .current {
|
||||
@ -273,9 +272,19 @@ nav.sub {
|
||||
overflow: auto;
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
#search {
|
||||
margin-left: 230px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#results {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
left: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.content pre.line-numbers {
|
||||
float: left;
|
||||
border: none;
|
||||
|
@ -282,9 +282,34 @@ pub mod builtin {
|
||||
|
||||
/// Unconditionally causes compilation to fail with the given error message when encountered.
|
||||
///
|
||||
/// For more information, see the [RFC].
|
||||
/// This macro should be used when a crate uses a conditional compilation strategy to provide
|
||||
/// better error messages for errornous conditions.
|
||||
///
|
||||
/// [RFC]: https://github.com/rust-lang/rfcs/blob/master/text/1695-add-error-macro.md
|
||||
/// # Examples
|
||||
///
|
||||
/// Two such examples are macros and `#[cfg]` environments.
|
||||
///
|
||||
/// Emit better compiler error if a macro is passed invalid values.
|
||||
///
|
||||
/// ```compile_fail
|
||||
/// macro_rules! give_me_foo_or_bar {
|
||||
/// (foo) => {};
|
||||
/// (bar) => {};
|
||||
/// ($x:ident) => {
|
||||
/// compile_error!("This macro only accepts `foo` or `bar`");
|
||||
/// }
|
||||
/// }
|
||||
///
|
||||
/// give_me_foo_or_bar!(neither);
|
||||
/// // ^ will fail at compile time with message "This macro only accepts `foo` or `bar`"
|
||||
/// ```
|
||||
///
|
||||
/// Emit compiler error if one of a number of features isn't available.
|
||||
///
|
||||
/// ```compile_fail
|
||||
/// #[cfg(not(any(feature = "foo", feature = "bar")))]
|
||||
/// compile_error!("Either feature \"foo\" or \"bar\" must be enabled for this crate.")
|
||||
/// ```
|
||||
#[stable(feature = "compile_error_macro", since = "1.20.0")]
|
||||
#[macro_export]
|
||||
macro_rules! compile_error { ($msg:expr) => ({ /* compiler built-in */ }) }
|
||||
|
Loading…
Reference in New Issue
Block a user