|
| 1 | +Version 1.7.0 (2016-03-03) |
| 2 | +========================== |
| 3 | + |
| 4 | +Language |
| 5 | +-------- |
| 6 | + |
| 7 | +* Soundness fixes to the interactions between associated types and |
| 8 | + lifetimes, specified in [RFC 1214], [now generate errors][1.7sf] for |
| 9 | + code that violates the new rules. This is a significant change that |
| 10 | + is known to break existing code, so it has emitted warnings for the |
| 11 | + new error cases since 1.4 to give crate authors time to adapt. The |
| 12 | + details of what is changing are subtle; read the RFC for more. |
| 13 | + |
| 14 | +Libraries |
| 15 | +--------- |
| 16 | + |
| 17 | +* Stabilized APIs: |
| 18 | + [`Path::strip_prefix`][] (renamed from relative_from), |
| 19 | + [`path::StripPrefixError`][] (new error type returned from strip_prefix), |
| 20 | + [`Ipv4Addr::is_loopback`], |
| 21 | + [`Ipv4Addr::is_private`], |
| 22 | + [`Ipv4Addr::is_link_local`], |
| 23 | + [`Ipv4Addr::is_multicast`], |
| 24 | + [`Ipv4Addr::is_broadcast`], |
| 25 | + [`Ipv4Addr::is_documentation`], |
| 26 | + [`Ipv6Addr::is_unspecified`], |
| 27 | + [`Ipv6Addr::is_loopback`], |
| 28 | + [`Ipv6Addr::is_multicast`], |
| 29 | + [`Vec::as_slice`], |
| 30 | + [`Vec::as_mut_slice`], |
| 31 | + [`String::as_str`], |
| 32 | + [`String::as_mut_str`], |
| 33 | + `<[T]>::`[`clone_from_slice`], which now requires the two slices to |
| 34 | + be the same length |
| 35 | + `<[T]>::`[`sort_by_key`], |
| 36 | + [`i32::checked_rem`], |
| 37 | + [`i32::checked_neg`], |
| 38 | + [`i32::checked_shl`], |
| 39 | + [`i32::checked_shr`], |
| 40 | + [`i32::saturating_mul`], |
| 41 | + [`i32::overflowing_add`], |
| 42 | + [`i32::overflowing_sub`], |
| 43 | + [`i32::overflowing_mul`], |
| 44 | + [`i32::overflowing_div`], |
| 45 | + [`i32::overflowing_rem`], |
| 46 | + [`i32::overflowing_neg`], |
| 47 | + [`i32::overflowing_shl`], |
| 48 | + [`i32::overflowing_shr`], |
| 49 | + [`u32::checked_rem`], |
| 50 | + [`u32::checked_neg`], |
| 51 | + [`u32::checked_shl`], |
| 52 | + [`u32::checked_shl`], |
| 53 | + [`u32::saturating_mul`], |
| 54 | + [`u32::overflowing_add`], |
| 55 | + [`u32::overflowing_sub`], |
| 56 | + [`u32::overflowing_mul`], |
| 57 | + [`u32::overflowing_div`], |
| 58 | + [`u32::overflowing_rem`], |
| 59 | + [`u32::overflowing_neg`], |
| 60 | + [`u32::overflowing_shl`], |
| 61 | + [`u32::overflowing_shr`], |
| 62 | + checked, saturated, and overflowing operations for other primitive types, |
| 63 | + [`ffi::IntoStringError`], |
| 64 | + [`CString::into_string`], |
| 65 | + [`CString::into_bytes`], |
| 66 | + [`CString::into_bytes_with_nul`], |
| 67 | + `From<CString> for Vec<u8>`, |
| 68 | + [`IntoStringError::into_cstring`], |
| 69 | + [`IntoStringError::utf8_error`], |
| 70 | + `Error for IntoStringError`. |
| 71 | +* [Validating UTF-8 is faster by a factor of between 7 and 14x for |
| 72 | + ASCII input][1.7utf8]. This means that creating `String`s and `str`s |
| 73 | + from bytes is faster. |
| 74 | +* [The performance of `LineWriter` (and thus `io::stdout`) was |
| 75 | + improved by using `memchr` to search for newlines][1.7m]. |
| 76 | +* [`f32::to_degrees` and `f32::to_radians` are stable][1.7f]. The |
| 77 | + `f64` variants were stabilized previously. |
| 78 | +* [`BTreeMap` was rewritten to use less memory improve performance of |
| 79 | + insertion and iteration, the latter by as much as 5x`][1.7bm]. |
| 80 | +* [`BTreeSet` and its iterators, `Iter`, `IntoIter`, and `Range` are |
| 81 | + covariant over their contained type][1.7bt]. |
| 82 | +* [`LinkedList` and its iterators, `Iter` and `IntoIter` are covariant |
| 83 | + over their contained type][1.7ll]. |
| 84 | +* [`str::replace` now accepts a `Pattern`][1.7rp], like other string |
| 85 | + searching methods. |
| 86 | +* [`Any` is implemented for unsized types][1.7a]. |
| 87 | +* [`Hash` is implemented for `Duration`][1.7h]. |
| 88 | + |
| 89 | +Misc |
| 90 | +---- |
| 91 | + |
| 92 | +* [The `--error-format=json` flag to `rustc` causes it to emit errors |
| 93 | + in JSON format][1.7j]. This is an unstable flag and so also requires |
| 94 | + the `-Z unstable-options` flag. |
| 95 | +* [When running tests with `--test`, rustdoc will pass `--cfg` |
| 96 | + arguments to the compiler][1.7dt]. |
| 97 | +* [The compiler is built with RPATH information by default][1.7rpa]. |
| 98 | + This means that it will be possible to run `rustc` when installed in |
| 99 | + unusual configurations without configuring the dynamic linker search |
| 100 | + path explicitly. |
| 101 | +* [`rustc` passes `--enable-new-dtags` to GNU ld][1.7dta]. This makes |
| 102 | + any RPATH entries (emitted with `-C rpath`) *not* take precedence |
| 103 | + over `LD_LIBRARY_PATH`. |
| 104 | + |
| 105 | +Cargo |
| 106 | +----- |
| 107 | + |
| 108 | +* [`cargo rustc` accepts a `--profile` flag that runs `rustc` under |
| 109 | + any of the compilation profiles, 'dev', 'bench', or 'test'][1.7cp]. |
| 110 | +* [The `rerun-if-changed` build script directive no longer causes the |
| 111 | + build script to incorrectly run twice in certain scenarios][1.7rr]. |
| 112 | + |
| 113 | +Compatibility Notes |
| 114 | +------------------- |
| 115 | + |
| 116 | +* [Several bugs in the compiler's visibility calculations were |
| 117 | + fixed][1.7v]. Since this was found to break significant amounts of |
| 118 | + code, the new errors will be emitted as warnings for several release |
| 119 | + cycles, under the `private_in_public` lint. |
| 120 | +* Defaulted type parameters were accidentally accepted in positions |
| 121 | + that were not intended. In this release, [defaulted type parameters |
| 122 | + appearing outside of type definitions will generate a |
| 123 | + warning][1.7d], which will become an error in future releases. |
| 124 | +* [Parsing "." as a float results in an error instead of |
| 125 | + 0][1.7p]. That is, `".".parse::<f32>()` returns `Err`, not `Ok(0)`. |
| 126 | +* [Borrows of closure parameters may not outlive the closure][1.7bc]. |
| 127 | + |
| 128 | +[1.7a]: https://github.com/rust-lang/rust/pull/30928 |
| 129 | +[1.7bc]: https://github.com/rust-lang/rust/pull/30341 |
| 130 | +[1.7bm]: https://github.com/rust-lang/rust/pull/30426 |
| 131 | +[1.7bt]: https://github.com/rust-lang/rust/pull/30998 |
| 132 | +[1.7cp]: https://github.com/rust-lang/cargo/pull/2224 |
| 133 | +[1.7d]: https://github.com/rust-lang/rust/pull/30724 |
| 134 | +[1.7dt]: https://github.com/rust-lang/rust/pull/30372 |
| 135 | +[1.7dta]: https://github.com/rust-lang/rust/pull/30394 |
| 136 | +[1.7f]: https://github.com/rust-lang/rust/pull/30672 |
| 137 | +[1.7h]: https://github.com/rust-lang/rust/pull/30818 |
| 138 | +[1.7j]: https://github.com/rust-lang/rust/pull/30711 |
| 139 | +[1.7ll]: https://github.com/rust-lang/rust/pull/30663 |
| 140 | +[1.7m]: https://github.com/rust-lang/rust/pull/30381 |
| 141 | +[1.7p]: https://github.com/rust-lang/rust/pull/30681 |
| 142 | +[1.7rp]: https://github.com/rust-lang/rust/pull/29498 |
| 143 | +[1.7rpa]: https://github.com/rust-lang/rust/pull/30353 |
| 144 | +[1.7rr]: https://github.com/rust-lang/cargo/pull/2279 |
| 145 | +[1.7sf]: https://github.com/rust-lang/rust/pull/30389 |
| 146 | +[1.7utf8]: https://github.com/rust-lang/rust/pull/30740 |
| 147 | +[1.7v]: https://github.com/rust-lang/rust/pull/29973 |
| 148 | +[RFC 1214]: https://github.com/rust-lang/rfcs/blob/master/text/1214-projections-lifetimes-and-wf.md |
| 149 | +[`clone_from_slice`]: http://doc.rust-lang.org/nightly/std/primitive.slice.html#method.clone_from_slice |
| 150 | +[`sort_by_key`]: http://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key |
| 151 | +[`CString::into_bytes_with_nul`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes_with_nul |
| 152 | +[`CString::into_bytes`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_bytes |
| 153 | +[`CString::into_string`]: http://doc.rust-lang.org/nightly/std/ffi/struct.CString.html#method.into_string |
| 154 | +[`IntoStringError::into_cstring`]: http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.into_cstring |
| 155 | +[`IntoStringError::utf8_error`]: http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html#method.utf8_error |
| 156 | +[`Ipv4Addr::is_broadcast`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_broadcast |
| 157 | +[`Ipv4Addr::is_documentation`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_documentation |
| 158 | +[`Ipv4Addr::is_link_local`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_link_local |
| 159 | +[`Ipv4Addr::is_loopback`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_loopback |
| 160 | +[`Ipv4Addr::is_multicast`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_multicast |
| 161 | +[`Ipv4Addr::is_private`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv4Addr.html#method.is_private |
| 162 | +[`Ipv6Addr::is_loopback`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_loopback |
| 163 | +[`Ipv6Addr::is_multicast`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_multicast |
| 164 | +[`Ipv6Addr::is_unspecified`]: http://doc.rust-lang.org/nightly/std/net/struct.Ipv6Addr.html#method.is_unspecified |
| 165 | +[`Path::strip_prefix`]: http://doc.rust-lang.org/nightly/std/path/struct.Path.html#method.strip_prefix |
| 166 | +[`String::as_mut_str`]: http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_mut_str |
| 167 | +[`String::as_str`]: http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.as_str |
| 168 | +[`Vec::as_mut_slice`]: http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.as_mut_slice |
| 169 | +[`Vec::as_slice`]: http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.as_slice |
| 170 | +[`ffi::IntoStringError`]: http://doc.rust-lang.org/nightly/std/ffi/struct.IntoStringError.html |
| 171 | +[`i32::checked_neg`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_neg |
| 172 | +[`i32::checked_rem`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_rem |
| 173 | +[`i32::checked_shl`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_shl |
| 174 | +[`i32::checked_shr`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.checked_shr |
| 175 | +[`i32::overflowing_add`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_add |
| 176 | +[`i32::overflowing_div`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_div |
| 177 | +[`i32::overflowing_mul`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_mul |
| 178 | +[`i32::overflowing_neg`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_neg |
| 179 | +[`i32::overflowing_rem`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_rem |
| 180 | +[`i32::overflowing_shl`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_shl |
| 181 | +[`i32::overflowing_shr`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_shr |
| 182 | +[`i32::overflowing_sub`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.overflowing_sub |
| 183 | +[`i32::saturating_mul`]: http://doc.rust-lang.org/nightly/std/primitive.i32.html#method.saturating_mul |
| 184 | +[`path::StripPrefixError`]: http://doc.rust-lang.org/nightly/std/path/struct.StripPrefixError.html |
| 185 | +[`u32::checked_rem`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_rem |
| 186 | +[`u32::checked_shl`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.checked_shl |
| 187 | +[`u32::overflowing_add`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_add |
| 188 | +[`u32::overflowing_div`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_div |
| 189 | +[`u32::overflowing_mul`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_mul |
| 190 | +[`u32::overflowing_neg`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_neg |
| 191 | +[`u32::overflowing_rem`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_rem |
| 192 | +[`u32::overflowing_shl`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_shl |
| 193 | +[`u32::overflowing_shr`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_shr |
| 194 | +[`u32::overflowing_sub`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.overflowing_sub |
| 195 | +[`u32::saturating_mul`]: http://doc.rust-lang.org/nightly/std/primitive.u32.html#method.saturating_mul |
| 196 | + |
| 197 | + |
| 198 | +Version 1.6.0 (2016-01-21) |
| 199 | +========================== |
| 200 | + |
| 201 | +Language |
| 202 | +-------- |
| 203 | + |
| 204 | +* The `#![no_std]` attribute causes a crate to not be linked to the |
| 205 | + standard library, but only the [core library][1.6co], as described |
| 206 | + in [RFC 1184]. The core library defines common types and traits but |
| 207 | + has no platform dependencies whatsoever, and is the basis for Rust |
| 208 | + software in environments that cannot support a full port of the |
| 209 | + standard library, such as operating systems. Most of the core |
| 210 | + library is now stable. |
| 211 | + |
| 212 | +Libraries |
| 213 | +--------- |
| 214 | + |
| 215 | +* Stabilized APIs: |
| 216 | + [`Read::read_exact`], |
| 217 | + [`ErrorKind::UnexpectedEof`][] (renamed from `UnexpectedEOF`), |
| 218 | + [`fs::DirBuilder`], [`fs::DirBuilder::new`], |
| 219 | + [`fs::DirBuilder::recursive`], [`fs::DirBuilder::create`], |
| 220 | + [`os::unix::fs::DirBuilderExt`], |
| 221 | + [`os::unix::fs::DirBuilderExt::mode`], [`vec::Drain`], |
| 222 | + [`vec::Vec::drain`], [`string::Drain`], [`string::String::drain`], |
| 223 | + [`vec_deque::Drain`], [`vec_deque::VecDeque::drain`], |
| 224 | + [`collections::hash_map::Drain`], |
| 225 | + [`collections::hash_map::HashMap::drain`], |
| 226 | + [`collections::hash_set::Drain`], |
| 227 | + [`collections::hash_set::HashSet::drain`], |
| 228 | + [`collections::binary_heap::Drain`], |
| 229 | + [`collections::binary_heap::BinaryHeap::drain`], |
| 230 | + [`Vec::extend_from_slice`][] (renamed from `push_all`), |
| 231 | + [`Mutex::get_mut`], [`Mutex::into_inner`], [`RwLock::get_mut`], |
| 232 | + [`RwLock::into_inner`], |
| 233 | + [`Iterator::min_by_key`][] (renamed from `min_by`), |
| 234 | + [`Iterator::max_by_key`][] (renamed from `max_by`). |
| 235 | +* The [core library][1.6co] is stable, as are most of its APIs. |
| 236 | +* [The `assert_eq!` macro supports arguments that don't implement |
| 237 | + `Sized`][1.6ae], such as arrays. In this way it behaves more like |
| 238 | + `assert!`. |
| 239 | +* Several timer functions that take duration in milliseconds [are |
| 240 | + deprecated in favor of those that take `Duration`][1.6ms]. These |
| 241 | + include `Condvar::wait_timeout_ms`, `thread::sleep_ms`, and |
| 242 | + `thread::park_timeout_ms`. |
| 243 | +* The algorithm by which `Vec` reserves additional elements was |
| 244 | + [tweaked to not allocate excessive space][1.6a] while still growing |
| 245 | + exponentially. |
| 246 | +* `From` conversions are [implemented from integers to floats][1.6f] |
| 247 | + in cases where the conversion is lossless. Thus they are not |
| 248 | + implemented for 32-bit ints to `f32`, nor for 64-bit ints to `f32` |
| 249 | + or `f64`. They are also not implemented for `isize` and `usize` |
| 250 | + because the implementations would be platform-specific. `From` is |
| 251 | + also implemented from `f32` to `f64`. |
| 252 | +* `From<&Path>` and `From<PathBuf>` are implemented for `Cow<Path>`. |
| 253 | +* `From<T>` is implemented for `Box<T>`, `Rc<T>` and `Arc<T>`. |
| 254 | +* `IntoIterator` is implemented for `&PathBuf` and `&Path`. |
| 255 | +* [`BinaryHeap` was refactored][1.6bh] for modest performance |
| 256 | + improvements. |
| 257 | +* Sorting slices that are already sorted [is 50% faster in some |
| 258 | + cases][1.6s]. |
| 259 | + |
| 260 | +Cargo |
| 261 | +----- |
| 262 | + |
| 263 | +* Cargo will look in `$CARGO_HOME/bin` for subcommands [by default][1.6c]. |
| 264 | +* Cargo build scripts can specify their dependencies by emitting the |
| 265 | + [`rerun-if-changed`][1.6rr] key. |
| 266 | +* crates.io will reject publication of crates with dependencies that |
| 267 | + have a wildcard version constraint. Crates with wildcard |
| 268 | + dependencies were seen to cause a variety of problems, as described |
| 269 | + in [RFC 1241]. Since 1.5 publication of such crates has emitted a |
| 270 | + warning. |
| 271 | +* `cargo clean` [accepts a `--release` flag][1.6cc] to clean the |
| 272 | + release folder. A variety of artifacts that Cargo failed to clean |
| 273 | + are now correctly deleted. |
| 274 | + |
| 275 | +Misc |
| 276 | +---- |
| 277 | + |
| 278 | +* The `unreachable_code` lint [warns when a function call's argument |
| 279 | + diverges][1.6dv]. |
| 280 | +* The parser indicates [failures that may be caused by |
| 281 | + confusingly-similar Unicode characters][1.6uc] |
| 282 | +* Certain macro errors [are reported at definition time][1.6m], not |
| 283 | + expansion. |
| 284 | + |
| 285 | +Compatibility Notes |
| 286 | +------------------- |
| 287 | + |
| 288 | +* The compiler no longer makes use of the [`RUST_PATH`][1.6rp] |
| 289 | + environment variable when locating crates. This was a pre-cargo |
| 290 | + feature for integrating with the package manager that was |
| 291 | + accidentally never removed. |
| 292 | +* [A number of bugs were fixed in the privacy checker][1.6p] that |
| 293 | + could cause previously-accepted code to break. |
| 294 | +* [Modules and unit/tuple structs may not share the same name][1.6ts]. |
| 295 | +* [Bugs in pattern matching unit structs were fixed][1.6us]. The tuple |
| 296 | + struct pattern syntax (`Foo(..)`) can no longer be used to match |
| 297 | + unit structs. This is a warning now, but will become an error in |
| 298 | + future releases. Patterns that share the same name as a const are |
| 299 | + now an error. |
| 300 | +* A bug was fixed that causes [rustc not to apply default type |
| 301 | + parameters][1.6xc] when resolving certain method implementations of |
| 302 | + traits defined in other crates. |
| 303 | + |
| 304 | +[1.6a]: https://github.com/rust-lang/rust/pull/29454 |
| 305 | +[1.6ae]: https://github.com/rust-lang/rust/pull/29770 |
| 306 | +[1.6bh]: https://github.com/rust-lang/rust/pull/29811 |
| 307 | +[1.6c]: https://github.com/rust-lang/cargo/pull/2192 |
| 308 | +[1.6cc]: https://github.com/rust-lang/cargo/pull/2131 |
| 309 | +[1.6co]: http://doc.rust-lang.org/beta/core/index.html |
| 310 | +[1.6dv]: https://github.com/rust-lang/rust/pull/30000 |
| 311 | +[1.6f]: https://github.com/rust-lang/rust/pull/29129 |
| 312 | +[1.6m]: https://github.com/rust-lang/rust/pull/29828 |
| 313 | +[1.6ms]: https://github.com/rust-lang/rust/pull/29604 |
| 314 | +[1.6p]: https://github.com/rust-lang/rust/pull/29726 |
| 315 | +[1.6rp]: https://github.com/rust-lang/rust/pull/30034 |
| 316 | +[1.6rr]: https://github.com/rust-lang/cargo/pull/2134 |
| 317 | +[1.6s]: https://github.com/rust-lang/rust/pull/29675 |
| 318 | +[1.6ts]: https://github.com/rust-lang/rust/issues/21546 |
| 319 | +[1.6uc]: https://github.com/rust-lang/rust/pull/29837 |
| 320 | +[1.6us]: https://github.com/rust-lang/rust/pull/29383 |
| 321 | +[1.6xc]: https://github.com/rust-lang/rust/issues/30123 |
| 322 | +[RFC 1184]: https://github.com/rust-lang/rfcs/blob/master/text/1184-stabilize-no_std.md |
| 323 | +[RFC 1241]: https://github.com/rust-lang/rfcs/blob/master/text/1241-no-wildcard-deps.md |
| 324 | +[`ErrorKind::UnexpectedEof`]: http://doc.rust-lang.org/nightly/std/io/enum.ErrorKind.html#variant.UnexpectedEof |
| 325 | +[`Iterator::max_by_key`]: http://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.max_by_key |
| 326 | +[`Iterator::min_by_key`]: http://doc.rust-lang.org/nightly/std/iter/trait.Iterator.html#method.min_by_key |
| 327 | +[`Mutex::get_mut`]: http://doc.rust-lang.org/nightly/std/sync/struct.Mutex.html#method.get_mut |
| 328 | +[`Mutex::into_inner`]: http://doc.rust-lang.org/nightly/std/sync/struct.Mutex.html#method.into_inner |
| 329 | +[`Read::read_exact`]: http://doc.rust-lang.org/nightly/std/io/trait.Read.html#method.read_exact |
| 330 | +[`RwLock::get_mut`]: http://doc.rust-lang.org/nightly/std/sync/struct.RwLock.html#method.get_mut |
| 331 | +[`RwLock::into_inner`]: http://doc.rust-lang.org/nightly/std/sync/struct.RwLock.html#method.into_inner |
| 332 | +[`Vec::extend_from_slice`]: http://doc.rust-lang.org/nightly/collections/vec/struct.Vec.html#method.extend_from_slice |
| 333 | +[`collections::binary_heap::BinaryHeap::drain`]: http://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.BinaryHeap.html#method.drain |
| 334 | +[`collections::binary_heap::Drain`]: http://doc.rust-lang.org/nightly/std/collections/binary_heap/struct.Drain.html |
| 335 | +[`collections::hash_map::Drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.Drain.html |
| 336 | +[`collections::hash_map::HashMap::drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_map/struct.HashMap.html#method.drain |
| 337 | +[`collections::hash_set::Drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_set/struct.Drain.html |
| 338 | +[`collections::hash_set::HashSet::drain`]: http://doc.rust-lang.org/nightly/std/collections/hash_set/struct.HashSet.html#method.drain |
| 339 | +[`fs::DirBuilder::create`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.create |
| 340 | +[`fs::DirBuilder::new`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.new |
| 341 | +[`fs::DirBuilder::recursive`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html#method.recursive |
| 342 | +[`fs::DirBuilder`]: http://doc.rust-lang.org/nightly/std/fs/struct.DirBuilder.html |
| 343 | +[`os::unix::fs::DirBuilderExt::mode`]: http://doc.rust-lang.org/nightly/std/os/unix/fs/trait.DirBuilderExt.html#tymethod.mode |
| 344 | +[`os::unix::fs::DirBuilderExt`]: http://doc.rust-lang.org/nightly/std/os/unix/fs/trait.DirBuilderExt.html |
| 345 | +[`string::Drain`]: http://doc.rust-lang.org/nightly/std/string/struct.Drain.html |
| 346 | +[`string::String::drain`]: http://doc.rust-lang.org/nightly/std/string/struct.String.html#method.drain |
| 347 | +[`vec::Drain`]: http://doc.rust-lang.org/nightly/std/vec/struct.Drain.html |
| 348 | +[`vec::Vec::drain`]: http://doc.rust-lang.org/nightly/std/vec/struct.Vec.html#method.drain |
| 349 | +[`vec_deque::Drain`]: http://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.Drain.html |
| 350 | +[`vec_deque::VecDeque::drain`]: http://doc.rust-lang.org/nightly/std/collections/vec_deque/struct.VecDeque.html#method.drain |
| 351 | + |
| 352 | + |
1 | 353 | Version 1.5.0 (2015-12-10)
|
2 | 354 | ==========================
|
3 | 355 |
|
|
0 commit comments