mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-26 08:44:35 +00:00
Auto merge of #30897 - Manishearth:rollup, r=Manishearth
- Successful merges: #30821, #30869, #30871, #30874, #30879, #30886, #30892 - Failed merges: #30864
This commit is contained in:
commit
02fbf31fb2
@ -8,7 +8,7 @@ CFG_STATIC_LIB_NAME_x86_64-unknown-bitrig=lib$(1).a
|
||||
CFG_LIB_GLOB_x86_64-unknown-bitrig=lib$(1)-*.so
|
||||
CFG_LIB_DSYM_GLOB_x86_64-unknown-bitrig=$(1)-*.dylib.dSYM
|
||||
CFG_JEMALLOC_CFLAGS_x86_64-unknown-bitrig := -m64 -I/usr/include $(CFLAGS)
|
||||
CFG_GCCISH_CFLAGS_x86_64-unknown-bitrig := -Wall -Werror -fPIC -m64 -I/usr/include $(CFLAGS)
|
||||
CFG_GCCISH_CFLAGS_x86_64-unknown-bitrig := -Wall -Werror -fPIE -fPIC -m64 -I/usr/include $(CFLAGS)
|
||||
CFG_GCCISH_LINK_FLAGS_x86_64-unknown-bitrig := -shared -pic -pthread -m64 $(LDFLAGS)
|
||||
CFG_GCCISH_DEF_FLAG_x86_64-unknown-bitrig := -Wl,--export-dynamic,--dynamic-list=
|
||||
CFG_LLC_FLAGS_x86_64-unknown-bitrig :=
|
||||
|
@ -33,7 +33,7 @@ Rust, as well as publications about Rust.
|
||||
* [Non-blocking steal-half work queues](http://www.cs.bgu.ac.il/%7Ehendlerd/papers/p280-hendler.pdf)
|
||||
* [Reagents: expressing and composing fine-grained concurrency](http://www.mpi-sws.org/~turon/reagents.pdf)
|
||||
* [Algorithms for scalable synchronization of shared-memory multiprocessors](https://www.cs.rochester.edu/u/scott/papers/1991_TOCS_synch.pdf)
|
||||
* [Epoc-based reclamation](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf).
|
||||
* [Epoch-based reclamation](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-579.pdf).
|
||||
|
||||
### Others
|
||||
|
||||
|
@ -41,8 +41,8 @@ unsafe impl Scary for i32 {}
|
||||
```
|
||||
|
||||
It’s important to be able to explicitly delineate code that may have bugs that
|
||||
cause big problems. If a Rust program segfaults, you can be sure it’s somewhere
|
||||
in the sections marked `unsafe`.
|
||||
cause big problems. If a Rust program segfaults, you can be sure the cause is
|
||||
related to something marked `unsafe`.
|
||||
|
||||
# What does ‘safe’ mean?
|
||||
|
||||
|
@ -3677,10 +3677,10 @@ sites are:
|
||||
|
||||
* `let` statements where an explicit type is given.
|
||||
|
||||
For example, `128` is coerced to have type `i8` in the following:
|
||||
For example, `42` is coerced to have type `i8` in the following:
|
||||
|
||||
```rust
|
||||
let _: i8 = 128;
|
||||
let _: i8 = 42;
|
||||
```
|
||||
|
||||
* `static` and `const` statements (similar to `let` statements).
|
||||
@ -3690,36 +3690,36 @@ sites are:
|
||||
The value being coerced is the actual parameter, and it is coerced to
|
||||
the type of the formal parameter.
|
||||
|
||||
For example, `128` is coerced to have type `i8` in the following:
|
||||
For example, `42` is coerced to have type `i8` in the following:
|
||||
|
||||
```rust
|
||||
fn bar(_: i8) { }
|
||||
|
||||
fn main() {
|
||||
bar(128);
|
||||
bar(42);
|
||||
}
|
||||
```
|
||||
|
||||
* Instantiations of struct or variant fields
|
||||
|
||||
For example, `128` is coerced to have type `i8` in the following:
|
||||
For example, `42` is coerced to have type `i8` in the following:
|
||||
|
||||
```rust
|
||||
struct Foo { x: i8 }
|
||||
|
||||
fn main() {
|
||||
Foo { x: 128 };
|
||||
Foo { x: 42 };
|
||||
}
|
||||
```
|
||||
|
||||
* Function results, either the final line of a block if it is not
|
||||
semicolon-terminated or any expression in a `return` statement
|
||||
|
||||
For example, `128` is coerced to have type `i8` in the following:
|
||||
For example, `42` is coerced to have type `i8` in the following:
|
||||
|
||||
```rust
|
||||
fn foo() -> i8 {
|
||||
128
|
||||
42
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -237,17 +237,17 @@ impl<T> Box<T> {
|
||||
}
|
||||
|
||||
impl<T: ?Sized> Box<T> {
|
||||
/// Constructs a box from the raw pointer.
|
||||
/// Constructs a box from a raw pointer.
|
||||
///
|
||||
/// After this function call, pointer is owned by resulting box.
|
||||
/// In particular, it means that `Box` destructor calls destructor
|
||||
/// of `T` and releases memory. Since the way `Box` allocates and
|
||||
/// releases memory is unspecified, the only valid pointer to pass
|
||||
/// to this function is the one taken from another `Box` with
|
||||
/// `Box::into_raw` function.
|
||||
/// After calling this function, the raw pointer is owned by the
|
||||
/// resulting `Box`. Specifically, the `Box` destructor will call
|
||||
/// the destructor of `T` and free the allocated memory. Since the
|
||||
/// way `Box` allocates and releases memory is unspecified, the
|
||||
/// only valid pointer to pass to this function is the one taken
|
||||
/// from another `Box` via the `Box::into_raw` function.
|
||||
///
|
||||
/// Function is unsafe, because improper use of this function may
|
||||
/// lead to memory problems like double-free, for example if the
|
||||
/// This function is unsafe because improper use may lead to
|
||||
/// memory problems. For example, a double-free may occur if the
|
||||
/// function is called twice on the same raw pointer.
|
||||
#[stable(feature = "box_raw", since = "1.4.0")]
|
||||
#[inline]
|
||||
@ -257,11 +257,11 @@ impl<T: ?Sized> Box<T> {
|
||||
|
||||
/// Consumes the `Box`, returning the wrapped raw pointer.
|
||||
///
|
||||
/// After call to this function, caller is responsible for the memory
|
||||
/// previously managed by `Box`, in particular caller should properly
|
||||
/// destroy `T` and release memory. The proper way to do it is to
|
||||
/// convert pointer back to `Box` with `Box::from_raw` function, because
|
||||
/// `Box` does not specify, how memory is allocated.
|
||||
/// After calling this function, the caller is responsible for the
|
||||
/// memory previously managed by the `Box`. In particular, the
|
||||
/// caller should properly destroy `T` and release the memory. The
|
||||
/// proper way to do so is to convert the raw pointer back into a
|
||||
/// `Box` with the `Box::from_raw` function.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
//! Collection types.
|
||||
//!
|
||||
//! See [std::collections](../std/collections) for a detailed discussion of
|
||||
//! See [std::collections](../std/collections/index.html) for a detailed discussion of
|
||||
//! collections in Rust.
|
||||
|
||||
#![crate_name = "collections"]
|
||||
|
@ -8,8 +8,9 @@
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![unstable(feature = "collections_range", reason = "was just added",
|
||||
issue = "27711")]
|
||||
#![unstable(feature = "collections_range",
|
||||
reason = "waiting for dust to settle on inclusive ranges",
|
||||
issue = "30877")]
|
||||
|
||||
//! Range syntax.
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ impl str {
|
||||
///
|
||||
/// For iterating from the front, the [`matches()`] method can be used.
|
||||
///
|
||||
/// [`matches`]: #method.matches
|
||||
/// [`matches()`]: #method.matches
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -98,6 +98,7 @@ use boxed::Box;
|
||||
/// hello.push_str("orld!");
|
||||
/// ```
|
||||
///
|
||||
/// [`char`]: ../primitive.char.html
|
||||
/// [`push()`]: #method.push
|
||||
/// [`push_str()`]: #method.push_str
|
||||
///
|
||||
@ -199,8 +200,8 @@ use boxed::Box;
|
||||
/// ```
|
||||
///
|
||||
/// [`as_ptr()`]: #method.as_ptr
|
||||
/// [`len()`]: # method.len
|
||||
/// [`capacity()`]: # method.capacity
|
||||
/// [`len()`]: #method.len
|
||||
/// [`capacity()`]: #method.capacity
|
||||
///
|
||||
/// If a `String` has enough capacity, adding elements to it will not
|
||||
/// re-allocate. For example, consider this program:
|
||||
@ -480,7 +481,7 @@ impl String {
|
||||
/// Converts a slice of bytes to a `String`, including invalid characters.
|
||||
///
|
||||
/// A string slice ([`&str`]) is made of bytes ([`u8`]), and a slice of
|
||||
/// bytes ([`&[u8]`]) is made of bytes, so this function converts between
|
||||
/// bytes ([`&[u8]`][byteslice]) is made of bytes, so this function converts between
|
||||
/// the two. Not all byte slices are valid string slices, however: [`&str`]
|
||||
/// requires that it is valid UTF-8. During this conversion,
|
||||
/// `from_utf8_lossy()` will replace any invalid UTF-8 sequences with
|
||||
@ -488,7 +489,7 @@ impl String {
|
||||
///
|
||||
/// [`&str`]: ../primitive.str.html
|
||||
/// [`u8`]: ../primitive.u8.html
|
||||
/// [`&[u8]`]: ../primitive.slice.html
|
||||
/// [byteslice]: ../primitive.slice.html
|
||||
///
|
||||
/// If you are sure that the byte slice is valid UTF-8, and you don't want
|
||||
/// to incur the overhead of the conversion, there is an unsafe version
|
||||
@ -1347,6 +1348,8 @@ impl FromUtf8Error {
|
||||
///
|
||||
/// [`Utf8Error`]: ../str/struct.Utf8Error.html
|
||||
/// [`std::str`]: ../str/index.html
|
||||
/// [`u8`]: ../primitive.u8.html
|
||||
/// [`&str`]: ../primitive.str.html
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
@ -1358,7 +1358,7 @@ pub trait Iterator {
|
||||
/// One of the keys to `collect()`'s power is that many things you might
|
||||
/// not think of as 'collections' actually are. For example, a [`String`]
|
||||
/// is a collection of [`char`]s. And a collection of [`Result<T, E>`] can
|
||||
/// be thought of as single [`Result<Collection<T>, E>`]. See the examples
|
||||
/// be thought of as single `Result<Collection<T>, E>`. See the examples
|
||||
/// below for more.
|
||||
///
|
||||
/// [`String`]: ../string/struct.String.html
|
||||
|
@ -46,8 +46,8 @@ pub use tables::UNICODE_VERSION;
|
||||
/// This `struct` is created by the [`to_lowercase()`] method on [`char`]. See
|
||||
/// its documentation for more.
|
||||
///
|
||||
/// [`to_lowercase()`]: primitive.char.html#method.escape_to_lowercase
|
||||
/// [`char`]: primitive.char.html
|
||||
/// [`to_lowercase()`]: ../primitive.char.html#method.to_lowercase
|
||||
/// [`char`]: ../primitive.char.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub struct ToLowercase(CaseMappingIter);
|
||||
|
||||
@ -64,8 +64,8 @@ impl Iterator for ToLowercase {
|
||||
/// This `struct` is created by the [`to_uppercase()`] method on [`char`]. See
|
||||
/// its documentation for more.
|
||||
///
|
||||
/// [`to_uppercase()`]: primitive.char.html#method.escape_to_uppercase
|
||||
/// [`char`]: primitive.char.html
|
||||
/// [`to_uppercase()`]: ../primitive.char.html#method.to_uppercase
|
||||
/// [`char`]: ../primitive.char.html
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub struct ToUppercase(CaseMappingIter);
|
||||
|
||||
|
@ -112,7 +112,7 @@
|
||||
//! ```
|
||||
//!
|
||||
//! `BufWriter` doesn't add any new ways of writing; it just buffers every call
|
||||
//! to [`write()`][write]:
|
||||
//! to [`write()`][write()]:
|
||||
//!
|
||||
//! ```
|
||||
//! use std::io;
|
||||
@ -134,7 +134,7 @@
|
||||
//! # }
|
||||
//! ```
|
||||
//!
|
||||
//! [write]: trait.Write.html#tymethod.write
|
||||
//! [write()]: trait.Write.html#tymethod.write
|
||||
//!
|
||||
//! ## Standard input and output
|
||||
//!
|
||||
@ -399,7 +399,7 @@ fn read_to_end<R: Read + ?Sized>(r: &mut R, buf: &mut Vec<u8>) -> Result<usize>
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -459,7 +459,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -501,7 +501,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -540,7 +540,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -600,7 +600,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -643,7 +643,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -682,7 +682,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -718,7 +718,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(io)]
|
||||
@ -753,7 +753,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -789,7 +789,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// use std::io;
|
||||
@ -823,7 +823,7 @@ pub trait Read {
|
||||
///
|
||||
/// [`File`][file]s implement `Read`:
|
||||
///
|
||||
/// [file]: ../std/fs/struct.File.html
|
||||
/// [file]: ../fs/struct.File.html
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(io)]
|
||||
|
Loading…
Reference in New Issue
Block a user