Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit dd582ac

Browse files
committedJan 5, 2018
Auto merge of #47214 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests - Successful merges: #47030, #47033, #47110, #47149, #47150, #47160, #47162, #47182, #47198, #47199 - Failed merges:
2 parents 8a11b8c + 3fcb995 commit dd582ac

File tree

16 files changed

+162
-107
lines changed

16 files changed

+162
-107
lines changed
 

‎RELEASES.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ Stabilized APIs
3838

3939
Cargo
4040
-----
41-
- [Cargo now supports alternative registries][cargo/4506]
4241
- [Cargo now supports uninstallation of multiple packages][cargo/4561]
4342
eg. `cargo uninstall foo bar` uninstalls `foo` and `bar`.
4443
- [Added unit test checking to `cargo check`][cargo/4592]
@@ -49,7 +48,6 @@ Misc
4948
----
5049
- [Releases now ship with the Cargo book documentation.][45692]
5150
- [rustdoc now prints rendering warnings on every run.][45324]
52-
- [Release tarballs now come with rustfmt][45903]
5351

5452
Compatibility Notes
5553
-------------------
@@ -83,9 +81,7 @@ Compatibility Notes
8381
[45852]: https://github.com/rust-lang/rust/issues/45852
8482
[45853]: https://github.com/rust-lang/rust/pull/45853
8583
[45887]: https://github.com/rust-lang/rust/pull/45887
86-
[45903]: https://github.com/rust-lang/rust/pull/45903
8784
[45920]: https://github.com/rust-lang/rust/pull/45920
88-
[cargo/4506]: https://github.com/rust-lang/cargo/pull/4506
8985
[cargo/4561]: https://github.com/rust-lang/cargo/pull/4561
9086
[cargo/4592]: https://github.com/rust-lang/cargo/pull/4592
9187
[cargo/4637]: https://github.com/rust-lang/cargo/pull/4637

‎src/bootstrap/sanity.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,10 @@
2121
use std::collections::HashMap;
2222
use std::env;
2323
use std::ffi::{OsString, OsStr};
24-
use std::fs;
25-
use std::process::Command;
24+
use std::fs::{self, File};
25+
use std::io::Read;
2626
use std::path::PathBuf;
27+
use std::process::Command;
2728

2829
use build_helper::output;
2930

@@ -234,4 +235,14 @@ $ pacman -R cmake && pacman -S mingw-w64-x86_64-cmake
234235
if let Some(ref s) = build.config.ccache {
235236
cmd_finder.must_have(s);
236237
}
238+
239+
if build.config.channel == "stable" {
240+
let mut stage0 = String::new();
241+
t!(t!(File::open(build.src.join("src/stage0.txt")))
242+
.read_to_string(&mut stage0));
243+
if stage0.contains("\ndev:") {
244+
panic!("bootstrapping from a dev compiler in a stable release, but \
245+
should only be bootstrapping from a released compiler!");
246+
}
247+
}
237248
}

‎src/liballoc/btree/set.rs

Lines changed: 68 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -228,43 +228,7 @@ impl<T: Ord> BTreeSet<T> {
228228
pub fn new() -> BTreeSet<T> {
229229
BTreeSet { map: BTreeMap::new() }
230230
}
231-
}
232-
233-
impl<T> BTreeSet<T> {
234-
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
235-
///
236-
/// # Examples
237-
///
238-
/// ```
239-
/// use std::collections::BTreeSet;
240-
///
241-
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
242-
/// let mut set_iter = set.iter();
243-
/// assert_eq!(set_iter.next(), Some(&1));
244-
/// assert_eq!(set_iter.next(), Some(&2));
245-
/// assert_eq!(set_iter.next(), Some(&3));
246-
/// assert_eq!(set_iter.next(), None);
247-
/// ```
248-
///
249-
/// Values returned by the iterator are returned in ascending order:
250-
///
251-
/// ```
252-
/// use std::collections::BTreeSet;
253-
///
254-
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
255-
/// let mut set_iter = set.iter();
256-
/// assert_eq!(set_iter.next(), Some(&1));
257-
/// assert_eq!(set_iter.next(), Some(&2));
258-
/// assert_eq!(set_iter.next(), Some(&3));
259-
/// assert_eq!(set_iter.next(), None);
260-
/// ```
261-
#[stable(feature = "rust1", since = "1.0.0")]
262-
pub fn iter(&self) -> Iter<T> {
263-
Iter { iter: self.map.keys() }
264-
}
265-
}
266231

267-
impl<T: Ord> BTreeSet<T> {
268232
/// Constructs a double-ended iterator over a sub-range of elements in the set.
269233
/// The simplest way is to use the range syntax `min..max`, thus `range(min..max)` will
270234
/// yield elements from min (inclusive) to max (exclusive).
@@ -293,9 +257,7 @@ impl<T: Ord> BTreeSet<T> {
293257
{
294258
Range { iter: self.map.range(range) }
295259
}
296-
}
297260

298-
impl<T: Ord> BTreeSet<T> {
299261
/// Visits the values representing the difference,
300262
/// i.e. the values that are in `self` but not in `other`,
301263
/// in ascending order.
@@ -408,40 +370,6 @@ impl<T: Ord> BTreeSet<T> {
408370
}
409371
}
410372

411-
/// Returns the number of elements in the set.
412-
///
413-
/// # Examples
414-
///
415-
/// ```
416-
/// use std::collections::BTreeSet;
417-
///
418-
/// let mut v = BTreeSet::new();
419-
/// assert_eq!(v.len(), 0);
420-
/// v.insert(1);
421-
/// assert_eq!(v.len(), 1);
422-
/// ```
423-
#[stable(feature = "rust1", since = "1.0.0")]
424-
pub fn len(&self) -> usize {
425-
self.map.len()
426-
}
427-
428-
/// Returns `true` if the set contains no elements.
429-
///
430-
/// # Examples
431-
///
432-
/// ```
433-
/// use std::collections::BTreeSet;
434-
///
435-
/// let mut v = BTreeSet::new();
436-
/// assert!(v.is_empty());
437-
/// v.insert(1);
438-
/// assert!(!v.is_empty());
439-
/// ```
440-
#[stable(feature = "rust1", since = "1.0.0")]
441-
pub fn is_empty(&self) -> bool {
442-
self.len() == 0
443-
}
444-
445373
/// Clears the set, removing all values.
446374
///
447375
/// # Examples
@@ -724,6 +652,74 @@ impl<T: Ord> BTreeSet<T> {
724652
}
725653
}
726654

655+
impl<T> BTreeSet<T> {
656+
/// Gets an iterator that visits the values in the `BTreeSet` in ascending order.
657+
///
658+
/// # Examples
659+
///
660+
/// ```
661+
/// use std::collections::BTreeSet;
662+
///
663+
/// let set: BTreeSet<usize> = [1, 2, 3].iter().cloned().collect();
664+
/// let mut set_iter = set.iter();
665+
/// assert_eq!(set_iter.next(), Some(&1));
666+
/// assert_eq!(set_iter.next(), Some(&2));
667+
/// assert_eq!(set_iter.next(), Some(&3));
668+
/// assert_eq!(set_iter.next(), None);
669+
/// ```
670+
///
671+
/// Values returned by the iterator are returned in ascending order:
672+
///
673+
/// ```
674+
/// use std::collections::BTreeSet;
675+
///
676+
/// let set: BTreeSet<usize> = [3, 1, 2].iter().cloned().collect();
677+
/// let mut set_iter = set.iter();
678+
/// assert_eq!(set_iter.next(), Some(&1));
679+
/// assert_eq!(set_iter.next(), Some(&2));
680+
/// assert_eq!(set_iter.next(), Some(&3));
681+
/// assert_eq!(set_iter.next(), None);
682+
/// ```
683+
#[stable(feature = "rust1", since = "1.0.0")]
684+
pub fn iter(&self) -> Iter<T> {
685+
Iter { iter: self.map.keys() }
686+
}
687+
688+
/// Returns the number of elements in the set.
689+
///
690+
/// # Examples
691+
///
692+
/// ```
693+
/// use std::collections::BTreeSet;
694+
///
695+
/// let mut v = BTreeSet::new();
696+
/// assert_eq!(v.len(), 0);
697+
/// v.insert(1);
698+
/// assert_eq!(v.len(), 1);
699+
/// ```
700+
#[stable(feature = "rust1", since = "1.0.0")]
701+
pub fn len(&self) -> usize {
702+
self.map.len()
703+
}
704+
705+
/// Returns `true` if the set contains no elements.
706+
///
707+
/// # Examples
708+
///
709+
/// ```
710+
/// use std::collections::BTreeSet;
711+
///
712+
/// let mut v = BTreeSet::new();
713+
/// assert!(v.is_empty());
714+
/// v.insert(1);
715+
/// assert!(!v.is_empty());
716+
/// ```
717+
#[stable(feature = "rust1", since = "1.0.0")]
718+
pub fn is_empty(&self) -> bool {
719+
self.len() == 0
720+
}
721+
}
722+
727723
#[stable(feature = "rust1", since = "1.0.0")]
728724
impl<T: Ord> FromIterator<T> for BTreeSet<T> {
729725
fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> BTreeSet<T> {

‎src/liballoc_system/lib.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#![feature(core_intrinsics)]
2222
#![feature(staged_api)]
2323
#![feature(rustc_attrs)]
24-
#![cfg_attr(any(unix, target_os = "redox"), feature(libc))]
24+
#![cfg_attr(any(unix, target_os = "cloudabi", target_os = "redox"), feature(libc))]
2525
#![rustc_alloc_kind = "lib"]
2626

2727
// The minimum alignment guaranteed by the architecture. This value is used to
@@ -116,7 +116,7 @@ unsafe impl Alloc for System {
116116
}
117117
}
118118

119-
#[cfg(any(unix, target_os = "redox"))]
119+
#[cfg(any(unix, target_os = "cloudabi", target_os = "redox"))]
120120
mod platform {
121121
extern crate libc;
122122

@@ -213,6 +213,16 @@ mod platform {
213213
struct Stderr;
214214

215215
impl Write for Stderr {
216+
#[cfg(target_os = "cloudabi")]
217+
fn write_str(&mut self, _: &str) -> fmt::Result {
218+
// CloudABI does not have any reserved file descriptor
219+
// numbers. We should not attempt to write to file
220+
// descriptor #2, as it may be associated with any kind of
221+
// resource.
222+
Ok(())
223+
}
224+
225+
#[cfg(not(target_os = "cloudabi"))]
216226
fn write_str(&mut self, s: &str) -> fmt::Result {
217227
unsafe {
218228
libc::write(libc::STDERR_FILENO,

‎src/libcore/macros.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,7 @@ macro_rules! debug_assert_ne {
330330
/// // The prefered method of quick returning Errors
331331
/// fn write_to_file_question() -> Result<(), MyError> {
332332
/// let mut file = File::create("my_best_friends.txt")?;
333+
/// file.write_all(b"This is a list of my best friends.")?;
333334
/// Ok(())
334335
/// }
335336
///

‎src/libcore/mem.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ impl<T: ::fmt::Debug> ::fmt::Debug for ManuallyDrop<T> {
10241024
}
10251025
}
10261026

1027-
#[stable(feature = "manually_drop", since = "1.20.0")]
1027+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10281028
impl<T: Clone> Clone for ManuallyDrop<T> {
10291029
fn clone(&self) -> Self {
10301030
ManuallyDrop::new(self.deref().clone())
@@ -1035,14 +1035,14 @@ impl<T: Clone> Clone for ManuallyDrop<T> {
10351035
}
10361036
}
10371037

1038-
#[stable(feature = "manually_drop", since = "1.20.0")]
1038+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10391039
impl<T: Default> Default for ManuallyDrop<T> {
10401040
fn default() -> Self {
10411041
ManuallyDrop::new(Default::default())
10421042
}
10431043
}
10441044

1045-
#[stable(feature = "manually_drop", since = "1.20.0")]
1045+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10461046
impl<T: PartialEq> PartialEq for ManuallyDrop<T> {
10471047
fn eq(&self, other: &Self) -> bool {
10481048
self.deref().eq(other)
@@ -1053,10 +1053,10 @@ impl<T: PartialEq> PartialEq for ManuallyDrop<T> {
10531053
}
10541054
}
10551055

1056-
#[stable(feature = "manually_drop", since = "1.20.0")]
1056+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10571057
impl<T: Eq> Eq for ManuallyDrop<T> {}
10581058

1059-
#[stable(feature = "manually_drop", since = "1.20.0")]
1059+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10601060
impl<T: PartialOrd> PartialOrd for ManuallyDrop<T> {
10611061
fn partial_cmp(&self, other: &Self) -> Option<::cmp::Ordering> {
10621062
self.deref().partial_cmp(other)
@@ -1079,14 +1079,14 @@ impl<T: PartialOrd> PartialOrd for ManuallyDrop<T> {
10791079
}
10801080
}
10811081

1082-
#[stable(feature = "manually_drop", since = "1.20.0")]
1082+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10831083
impl<T: Ord> Ord for ManuallyDrop<T> {
10841084
fn cmp(&self, other: &Self) -> ::cmp::Ordering {
10851085
self.deref().cmp(other)
10861086
}
10871087
}
10881088

1089-
#[stable(feature = "manually_drop", since = "1.20.0")]
1089+
#[stable(feature = "manually_drop_impls", since = "1.22.0")]
10901090
impl<T: ::hash::Hash> ::hash::Hash for ManuallyDrop<T> {
10911091
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
10921092
self.deref().hash(state);

‎src/libcore/str/mod.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1997,7 +1997,9 @@ mod traits {
19971997
}
19981998
}
19991999

2000-
#[stable(feature = "str_checked_slicing", since = "1.20.0")]
2000+
#[unstable(feature = "inclusive_range",
2001+
reason = "recently added, follows RFC",
2002+
issue = "28237")]
20012003
impl SliceIndex<str> for ops::RangeInclusive<usize> {
20022004
type Output = str;
20032005
#[inline]
@@ -2040,7 +2042,9 @@ mod traits {
20402042

20412043

20422044

2043-
#[stable(feature = "str_checked_slicing", since = "1.20.0")]
2045+
#[unstable(feature = "inclusive_range",
2046+
reason = "recently added, follows RFC",
2047+
issue = "28237")]
20442048
impl SliceIndex<str> for ops::RangeToInclusive<usize> {
20452049
type Output = str;
20462050
#[inline]

‎src/libcore/sync/atomic.rs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -944,6 +944,7 @@ macro_rules! atomic_int {
944944
$stable_cxchg:meta,
945945
$stable_debug:meta,
946946
$stable_access:meta,
947+
$stable_from:meta,
947948
$s_int_type:expr, $int_ref:expr,
948949
$int_type:ident $atomic_type:ident $atomic_init:ident) => {
949950
/// An integer type which can be safely shared between threads.
@@ -978,7 +979,7 @@ macro_rules! atomic_int {
978979
}
979980
}
980981

981-
#[stable(feature = "atomic_from", since = "1.23.0")]
982+
#[$stable_from]
982983
impl From<$int_type> for $atomic_type {
983984
#[inline]
984985
fn from(v: $int_type) -> Self { Self::new(v) }
@@ -1375,6 +1376,7 @@ atomic_int! {
13751376
unstable(feature = "integer_atomics", issue = "32976"),
13761377
unstable(feature = "integer_atomics", issue = "32976"),
13771378
unstable(feature = "integer_atomics", issue = "32976"),
1379+
unstable(feature = "integer_atomics", issue = "32976"),
13781380
"i8", "../../../std/primitive.i8.html",
13791381
i8 AtomicI8 ATOMIC_I8_INIT
13801382
}
@@ -1384,6 +1386,7 @@ atomic_int! {
13841386
unstable(feature = "integer_atomics", issue = "32976"),
13851387
unstable(feature = "integer_atomics", issue = "32976"),
13861388
unstable(feature = "integer_atomics", issue = "32976"),
1389+
unstable(feature = "integer_atomics", issue = "32976"),
13871390
"u8", "../../../std/primitive.u8.html",
13881391
u8 AtomicU8 ATOMIC_U8_INIT
13891392
}
@@ -1393,6 +1396,7 @@ atomic_int! {
13931396
unstable(feature = "integer_atomics", issue = "32976"),
13941397
unstable(feature = "integer_atomics", issue = "32976"),
13951398
unstable(feature = "integer_atomics", issue = "32976"),
1399+
unstable(feature = "integer_atomics", issue = "32976"),
13961400
"i16", "../../../std/primitive.i16.html",
13971401
i16 AtomicI16 ATOMIC_I16_INIT
13981402
}
@@ -1402,6 +1406,7 @@ atomic_int! {
14021406
unstable(feature = "integer_atomics", issue = "32976"),
14031407
unstable(feature = "integer_atomics", issue = "32976"),
14041408
unstable(feature = "integer_atomics", issue = "32976"),
1409+
unstable(feature = "integer_atomics", issue = "32976"),
14051410
"u16", "../../../std/primitive.u16.html",
14061411
u16 AtomicU16 ATOMIC_U16_INIT
14071412
}
@@ -1411,6 +1416,7 @@ atomic_int! {
14111416
unstable(feature = "integer_atomics", issue = "32976"),
14121417
unstable(feature = "integer_atomics", issue = "32976"),
14131418
unstable(feature = "integer_atomics", issue = "32976"),
1419+
unstable(feature = "integer_atomics", issue = "32976"),
14141420
"i32", "../../../std/primitive.i32.html",
14151421
i32 AtomicI32 ATOMIC_I32_INIT
14161422
}
@@ -1420,6 +1426,7 @@ atomic_int! {
14201426
unstable(feature = "integer_atomics", issue = "32976"),
14211427
unstable(feature = "integer_atomics", issue = "32976"),
14221428
unstable(feature = "integer_atomics", issue = "32976"),
1429+
unstable(feature = "integer_atomics", issue = "32976"),
14231430
"u32", "../../../std/primitive.u32.html",
14241431
u32 AtomicU32 ATOMIC_U32_INIT
14251432
}
@@ -1429,6 +1436,7 @@ atomic_int! {
14291436
unstable(feature = "integer_atomics", issue = "32976"),
14301437
unstable(feature = "integer_atomics", issue = "32976"),
14311438
unstable(feature = "integer_atomics", issue = "32976"),
1439+
unstable(feature = "integer_atomics", issue = "32976"),
14321440
"i64", "../../../std/primitive.i64.html",
14331441
i64 AtomicI64 ATOMIC_I64_INIT
14341442
}
@@ -1438,6 +1446,7 @@ atomic_int! {
14381446
unstable(feature = "integer_atomics", issue = "32976"),
14391447
unstable(feature = "integer_atomics", issue = "32976"),
14401448
unstable(feature = "integer_atomics", issue = "32976"),
1449+
unstable(feature = "integer_atomics", issue = "32976"),
14411450
"u64", "../../../std/primitive.u64.html",
14421451
u64 AtomicU64 ATOMIC_U64_INIT
14431452
}
@@ -1447,6 +1456,7 @@ atomic_int!{
14471456
stable(feature = "extended_compare_and_swap", since = "1.10.0"),
14481457
stable(feature = "atomic_debug", since = "1.3.0"),
14491458
stable(feature = "atomic_access", since = "1.15.0"),
1459+
stable(feature = "atomic_from", since = "1.23.0"),
14501460
"isize", "../../../std/primitive.isize.html",
14511461
isize AtomicIsize ATOMIC_ISIZE_INIT
14521462
}
@@ -1456,6 +1466,7 @@ atomic_int!{
14561466
stable(feature = "extended_compare_and_swap", since = "1.10.0"),
14571467
stable(feature = "atomic_debug", since = "1.3.0"),
14581468
stable(feature = "atomic_access", since = "1.15.0"),
1469+
stable(feature = "atomic_from", since = "1.23.0"),
14591470
"usize", "../../../std/primitive.usize.html",
14601471
usize AtomicUsize ATOMIC_USIZE_INIT
14611472
}

‎src/libproc_macro/lib.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,27 @@ impl Span {
247247
#[unstable(feature = "proc_macro", issue = "38356")]
248248
pub fn join(&self, other: Span) -> Option<Span> {
249249
let self_loc = __internal::lookup_char_pos(self.0.lo());
250-
let other_loc = __internal::lookup_char_pos(self.0.lo());
250+
let other_loc = __internal::lookup_char_pos(other.0.lo());
251251

252252
if self_loc.file.name != other_loc.file.name { return None }
253253

254254
Some(Span(self.0.to(other.0)))
255255
}
256256

257+
/// Creates a new span with the same line/column information as `self` but
258+
/// that resolves symbols as though it were at `other`.
259+
#[unstable(feature = "proc_macro", issue = "38356")]
260+
pub fn resolved_at(&self, other: Span) -> Span {
261+
Span(self.0.with_ctxt(other.0.ctxt()))
262+
}
263+
264+
/// Creates a new span with the same name resolution behavior as `self` but
265+
/// with the line/column information of `other`.
266+
#[unstable(feature = "proc_macro", issue = "38356")]
267+
pub fn located_at(&self, other: Span) -> Span {
268+
other.resolved_at(*self)
269+
}
270+
257271
diagnostic_method!(error, Level::Error);
258272
diagnostic_method!(warning, Level::Warning);
259273
diagnostic_method!(note, Level::Note);

‎src/librustc_back/target/cloudabi_base.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,18 @@ pub fn opts() -> TargetOptions {
2727
linker_is_gnu: true,
2828
pre_link_args: args,
2929
position_independent_executables: true,
30+
// As CloudABI only supports static linkage, there is no need
31+
// for dynamic TLS. The C library therefore does not provide
32+
// __tls_get_addr(), which is normally used to perform dynamic
33+
// TLS lookups by programs that make use of dlopen(). Only the
34+
// "local-exec" and "initial-exec" TLS models can be used.
35+
//
36+
// "local-exec" is more efficient than "initial-exec", as the
37+
// latter has one more level of indirection: it accesses the GOT
38+
// (Global Offset Table) to obtain the effective address of a
39+
// thread-local variable. Using a GOT is useful only when doing
40+
// dynamic linking.
41+
tls_model: "local-exec".to_string(),
3042
relro_level: RelroLevel::Full,
3143
exe_allocation_crate: super::maybe_jemalloc(),
3244
.. Default::default()

‎src/libstd/ffi/c_str.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ impl From<CString> for Box<CStr> {
706706
}
707707
}
708708

709-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
709+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
710710
impl From<CString> for Arc<CStr> {
711711
#[inline]
712712
fn from(s: CString) -> Arc<CStr> {
@@ -715,7 +715,7 @@ impl From<CString> for Arc<CStr> {
715715
}
716716
}
717717

718-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
718+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
719719
impl<'a> From<&'a CStr> for Arc<CStr> {
720720
#[inline]
721721
fn from(s: &CStr) -> Arc<CStr> {
@@ -724,7 +724,7 @@ impl<'a> From<&'a CStr> for Arc<CStr> {
724724
}
725725
}
726726

727-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
727+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
728728
impl From<CString> for Rc<CStr> {
729729
#[inline]
730730
fn from(s: CString) -> Rc<CStr> {
@@ -733,7 +733,7 @@ impl From<CString> for Rc<CStr> {
733733
}
734734
}
735735

736-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
736+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
737737
impl<'a> From<&'a CStr> for Rc<CStr> {
738738
#[inline]
739739
fn from(s: &CStr) -> Rc<CStr> {

‎src/libstd/ffi/os_str.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ impl From<OsString> for Box<OsStr> {
594594
}
595595
}
596596

597-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
597+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
598598
impl From<OsString> for Arc<OsStr> {
599599
#[inline]
600600
fn from(s: OsString) -> Arc<OsStr> {
@@ -603,7 +603,7 @@ impl From<OsString> for Arc<OsStr> {
603603
}
604604
}
605605

606-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
606+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
607607
impl<'a> From<&'a OsStr> for Arc<OsStr> {
608608
#[inline]
609609
fn from(s: &OsStr) -> Arc<OsStr> {
@@ -612,7 +612,7 @@ impl<'a> From<&'a OsStr> for Arc<OsStr> {
612612
}
613613
}
614614

615-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
615+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
616616
impl From<OsString> for Rc<OsStr> {
617617
#[inline]
618618
fn from(s: OsString) -> Rc<OsStr> {
@@ -621,7 +621,7 @@ impl From<OsString> for Rc<OsStr> {
621621
}
622622
}
623623

624-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
624+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
625625
impl<'a> From<&'a OsStr> for Rc<OsStr> {
626626
#[inline]
627627
fn from(s: &OsStr) -> Rc<OsStr> {

‎src/libstd/path.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1454,7 +1454,7 @@ impl<'a> From<PathBuf> for Cow<'a, Path> {
14541454
}
14551455
}
14561456

1457-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
1457+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
14581458
impl From<PathBuf> for Arc<Path> {
14591459
#[inline]
14601460
fn from(s: PathBuf) -> Arc<Path> {
@@ -1463,7 +1463,7 @@ impl From<PathBuf> for Arc<Path> {
14631463
}
14641464
}
14651465

1466-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
1466+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
14671467
impl<'a> From<&'a Path> for Arc<Path> {
14681468
#[inline]
14691469
fn from(s: &Path) -> Arc<Path> {
@@ -1472,7 +1472,7 @@ impl<'a> From<&'a Path> for Arc<Path> {
14721472
}
14731473
}
14741474

1475-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
1475+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
14761476
impl From<PathBuf> for Rc<Path> {
14771477
#[inline]
14781478
fn from(s: PathBuf) -> Rc<Path> {
@@ -1481,7 +1481,7 @@ impl From<PathBuf> for Rc<Path> {
14811481
}
14821482
}
14831483

1484-
#[stable(feature = "shared_from_slice2", since = "1.23.0")]
1484+
#[stable(feature = "shared_from_slice2", since = "1.24.0")]
14851485
impl<'a> From<&'a Path> for Rc<Path> {
14861486
#[inline]
14871487
fn from(s: &Path) -> Rc<Path> {

‎src/libstd/process.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@
6868
//! assert_eq!(b"Oh no, a typo!\n", output.stdout.as_slice());
6969
//! ```
7070
//!
71-
//! Note that [`ChildStderr`] and [`ChildStdout`] implement [`Write`] and
72-
//! [`ChildStdin`] implements [`Read`]:
71+
//! Note that [`ChildStderr`] and [`ChildStdout`] implement [`Read`] and
72+
//! [`ChildStdin`] implements [`Write`]:
7373
//!
7474
//! ```no_run
7575
//! use std::process::{Command, Stdio};

‎src/libstd/sync/mutex.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ unsafe impl<#[may_dangle] T: ?Sized> Drop for Mutex<T> {
382382
}
383383
}
384384

385-
#[stable(feature = "mutex_from", since = "1.22.0")]
385+
#[stable(feature = "mutex_from", since = "1.24.0")]
386386
impl<T> From<T> for Mutex<T> {
387387
/// Creates a new mutex in an unlocked state ready for use.
388388
/// This is equivalent to [`Mutex::new`].

‎src/libstd/sync/rwlock.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ impl<T: Default> Default for RwLock<T> {
457457
}
458458
}
459459

460-
#[stable(feature = "rw_lock_from", since = "1.22.0")]
460+
#[stable(feature = "rw_lock_from", since = "1.24.0")]
461461
impl<T> From<T> for RwLock<T> {
462462
/// Creates a new instance of an `RwLock<T>` which is unlocked.
463463
/// This is equivalent to [`RwLock::new`].

0 commit comments

Comments
 (0)
Please sign in to comment.