diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-11-16 19:54:28 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2015-11-18 01:24:21 +0300 |
| commit | 7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2 (patch) | |
| tree | 63f67955eac7b8d88a7a771a958948500d4d9f15 /src/libstd | |
| parent | 52acc05f6398d70e8cc506e19bb9fefbed7368ac (diff) | |
| download | rust-7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2.tar.gz rust-7e2ffc7090a70fe8c77a0e03fcec3cb1387141f2.zip | |
Add missing annotations and some tests
Diffstat (limited to 'src/libstd')
42 files changed, 188 insertions, 14 deletions
diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index b8482b3a2dc..c8b377ba3be 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -1215,6 +1215,7 @@ fn search_entry_hashed<'a, K: Eq, V>(table: &'a mut RawTable<K,V>, hash: SafeHas } } +#[stable(feature = "rust1", since = "1.0.0")] impl<K, V, S> PartialEq for HashMap<K, V, S> where K: Eq + Hash, V: PartialEq, S: HashState { @@ -1272,6 +1273,7 @@ pub struct Iter<'a, K: 'a, V: 'a> { } // FIXME(#19839) Remove in favor of `#[derive(Clone)]` +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, K, V> Clone for Iter<'a, K, V> { fn clone(&self) -> Iter<'a, K, V> { Iter { @@ -1299,6 +1301,7 @@ pub struct Keys<'a, K: 'a, V: 'a> { } // FIXME(#19839) Remove in favor of `#[derive(Clone)]` +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, K, V> Clone for Keys<'a, K, V> { fn clone(&self) -> Keys<'a, K, V> { Keys { @@ -1314,6 +1317,7 @@ pub struct Values<'a, K: 'a, V: 'a> { } // FIXME(#19839) Remove in favor of `#[derive(Clone)]` +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, K, V> Clone for Values<'a, K, V> { fn clone(&self) -> Values<'a, K, V> { Values { diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index bb7a96bfb4b..0021155b00a 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -901,6 +901,7 @@ impl<T, S> IntoIterator for HashSet<T, S> } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, K> Clone for Iter<'a, K> { fn clone(&self) -> Iter<'a, K> { Iter { iter: self.iter.clone() } } } @@ -940,6 +941,7 @@ impl<'a, K> ExactSizeIterator for Drain<'a, K> { fn len(&self) -> usize { self.iter.len() } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T, S> Clone for Intersection<'a, T, S> { fn clone(&self) -> Intersection<'a, T, S> { Intersection { iter: self.iter.clone(), ..*self } @@ -969,6 +971,7 @@ impl<'a, T, S> Iterator for Intersection<'a, T, S> } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T, S> Clone for Difference<'a, T, S> { fn clone(&self) -> Difference<'a, T, S> { Difference { iter: self.iter.clone(), ..*self } @@ -998,6 +1001,7 @@ impl<'a, T, S> Iterator for Difference<'a, T, S> } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T, S> Clone for SymmetricDifference<'a, T, S> { fn clone(&self) -> SymmetricDifference<'a, T, S> { SymmetricDifference { iter: self.iter.clone() } @@ -1014,6 +1018,7 @@ impl<'a, T, S> Iterator for SymmetricDifference<'a, T, S> fn size_hint(&self) -> (usize, Option<usize>) { self.iter.size_hint() } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T, S> Clone for Union<'a, T, S> { fn clone(&self) -> Union<'a, T, S> { Union { iter: self.iter.clone() } } } diff --git a/src/libstd/collections/mod.rs b/src/libstd/collections/mod.rs index 71d9fbfaa3e..07ddfe237be 100644 --- a/src/libstd/collections/mod.rs +++ b/src/libstd/collections/mod.rs @@ -408,14 +408,20 @@ #![stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::Bound; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::{BinaryHeap, BTreeMap, BTreeSet}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::{LinkedList, VecDeque}; - +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::{binary_heap, btree_map, btree_set}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::{linked_list, vec_deque}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::hash_map::HashMap; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::hash_set::HashSet; mod hash; @@ -423,12 +429,14 @@ mod hash; #[stable(feature = "rust1", since = "1.0.0")] pub mod hash_map { //! A hashmap + #[stable(feature = "rust1", since = "1.0.0")] pub use super::hash::map::*; } #[stable(feature = "rust1", since = "1.0.0")] pub mod hash_set { //! A hashset + #[stable(feature = "rust1", since = "1.0.0")] pub use super::hash::set::*; } diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs index 191c7dc5806..e00b02f518c 100644 --- a/src/libstd/fs.rs +++ b/src/libstd/fs.rs @@ -324,6 +324,7 @@ impl IntoInner<fs_imp::File> for File { } } +#[stable(feature = "rust1", since = "1.0.0")] impl fmt::Debug for File { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.inner.fmt(f) @@ -1230,6 +1231,7 @@ pub trait PathExt { } #[allow(deprecated)] +#[unstable(feature = "path_ext_deprecated", issue = "27725")] impl PathExt for Path { fn metadata(&self) -> io::Result<Metadata> { metadata(self) } fn symlink_metadata(&self) -> io::Result<Metadata> { symlink_metadata(self) } diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs index acab63315e4..90a79da3483 100644 --- a/src/libstd/io/buffered.rs +++ b/src/libstd/io/buffered.rs @@ -485,6 +485,7 @@ impl<W: Write + Seek> Seek for BufWriter<W> { } } +#[stable(feature = "rust1", since = "1.0.0")] impl<W: Write> Drop for BufWriter<W> { fn drop(&mut self) { if self.inner.is_some() { diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 34736f81033..ebf322fab4d 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -255,13 +255,21 @@ use string::String; use str; use vec::Vec; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::buffered::{BufReader, BufWriter, LineWriter}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::buffered::IntoInnerError; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::cursor::Cursor; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::error::{Result, Error, ErrorKind}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::util::{copy, sink, Sink, empty, Empty, repeat, Repeat}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::stdio::{stdin, stdout, stderr, _print, Stdin, Stdout, Stderr}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::stdio::{StdoutLock, StderrLock, StdinLock}; +#[unstable(feature = "libstd_io_internals", issue = "0")] #[doc(no_inline, hidden)] pub use self::stdio::{set_panic, set_print}; diff --git a/src/libstd/io/prelude.rs b/src/libstd/io/prelude.rs index f8fbe485c9b..f588ec60589 100644 --- a/src/libstd/io/prelude.rs +++ b/src/libstd/io/prelude.rs @@ -20,6 +20,8 @@ #![stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "rust1", since = "1.0.0")] pub use super::{Read, Write, BufRead, Seek}; #[allow(deprecated)] +#[unstable(feature = "path_ext_deprecated", issue = "27725")] pub use fs::PathExt; diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index a0bb9449806..6d8d6f82f07 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -303,36 +303,63 @@ extern crate libc; // NB: These reexports are in the order they should be listed in rustdoc +#[stable(feature = "rust1", since = "1.0.0")] pub use core::any; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::cell; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::clone; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::cmp; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::convert; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::default; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::hash; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::intrinsics; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::iter; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::marker; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::mem; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::ops; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::ptr; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::raw; +#[stable(feature = "rust1", since = "1.0.0")] #[allow(deprecated)] pub use core::simd; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::result; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::option; + pub mod error; +#[stable(feature = "rust1", since = "1.0.0")] pub use alloc::boxed; +#[stable(feature = "rust1", since = "1.0.0")] pub use alloc::rc; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::borrow; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::fmt; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::slice; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::str; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::string; +#[stable(feature = "rust1", since = "1.0.0")] pub use core_collections::vec; +#[stable(feature = "rust1", since = "1.0.0")] pub use rustc_unicode::char; /* Exported macros */ @@ -353,16 +380,26 @@ pub mod prelude; // doc pages are inlined from the public re-exports of core_collections::{slice, // str} above. +#[stable(feature = "rust1", since = "1.0.0")] pub use core::isize; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::i8; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::i16; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::i32; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::i64; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::usize; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::u8; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::u16; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::u32; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::u64; #[path = "num/f32.rs"] pub mod f32; diff --git a/src/libstd/macros.rs b/src/libstd/macros.rs index a88ddb997f6..efeb59b4ac7 100644 --- a/src/libstd/macros.rs +++ b/src/libstd/macros.rs @@ -259,6 +259,7 @@ pub mod builtin { /// assert_eq!(s, format!("hello {}", "world")); /// /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! format_args { ($fmt:expr, $($args:tt)*) => ({ /* compiler built-in */ @@ -279,6 +280,7 @@ pub mod builtin { /// let path: &'static str = env!("PATH"); /// println!("the $PATH variable at the time of compiling was: {}", path); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! env { ($name:expr) => ({ /* compiler built-in */ }) } @@ -298,6 +300,7 @@ pub mod builtin { /// let key: Option<&'static str> = option_env!("SECRET_KEY"); /// println!("the secret key might be: {:?}", key); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! option_env { ($name:expr) => ({ /* compiler built-in */ }) } @@ -322,6 +325,7 @@ pub mod builtin { /// println!("{}", f()); /// # } /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! concat_idents { ($($e:ident),*) => ({ /* compiler built-in */ }) @@ -342,6 +346,7 @@ pub mod builtin { /// let s = concat!("test", 10, 'b', true); /// assert_eq!(s, "test10btrue"); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! concat { ($($e:expr),*) => ({ /* compiler built-in */ }) } @@ -357,6 +362,7 @@ pub mod builtin { /// let current_line = line!(); /// println!("defined on line: {}", current_line); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! line { () => ({ /* compiler built-in */ }) } @@ -372,6 +378,7 @@ pub mod builtin { /// let current_col = column!(); /// println!("defined on column: {}", current_col); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! column { () => ({ /* compiler built-in */ }) } @@ -388,6 +395,7 @@ pub mod builtin { /// let this_file = file!(); /// println!("defined in file: {}", this_file); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! file { () => ({ /* compiler built-in */ }) } @@ -403,6 +411,7 @@ pub mod builtin { /// let one_plus_one = stringify!(1 + 1); /// assert_eq!(one_plus_one, "1 + 1"); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! stringify { ($t:tt) => ({ /* compiler built-in */ }) } @@ -417,6 +426,7 @@ pub mod builtin { /// ```rust,ignore /// let secret_key = include_str!("secret-key.ascii"); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! include_str { ($file:expr) => ({ /* compiler built-in */ }) } @@ -431,6 +441,7 @@ pub mod builtin { /// ```rust,ignore /// let secret_key = include_bytes!("secret-key.bin"); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! include_bytes { ($file:expr) => ({ /* compiler built-in */ }) } @@ -451,6 +462,7 @@ pub mod builtin { /// /// test::foo(); /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! module_path { () => ({ /* compiler built-in */ }) } @@ -472,6 +484,7 @@ pub mod builtin { /// "unix-directory" /// }; /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! cfg { ($cfg:tt) => ({ /* compiler built-in */ }) } @@ -486,6 +499,7 @@ pub mod builtin { /// include!("/path/to/a/file") /// } /// ``` + #[stable(feature = "rust1", since = "1.0.0")] #[macro_export] macro_rules! include { ($cfg:tt) => ({ /* compiler built-in */ }) } } diff --git a/src/libstd/net/addr.rs b/src/libstd/net/addr.rs index 66c1ab720b6..22bb5ff874d 100644 --- a/src/libstd/net/addr.rs +++ b/src/libstd/net/addr.rs @@ -448,6 +448,7 @@ impl ToSocketAddrs for str { } } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ToSocketAddrs + ?Sized> ToSocketAddrs for &'a T { type Iter = T::Iter; fn to_socket_addrs(&self) -> io::Result<T::Iter> { diff --git a/src/libstd/net/mod.rs b/src/libstd/net/mod.rs index 8a02d37c89b..383dce737f5 100644 --- a/src/libstd/net/mod.rs +++ b/src/libstd/net/mod.rs @@ -17,10 +17,15 @@ use prelude::v1::*; use io::{self, Error, ErrorKind}; use sys_common::net as net_imp; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::ip::{IpAddr, Ipv4Addr, Ipv6Addr, Ipv6MulticastScope}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::addr::{SocketAddr, SocketAddrV4, SocketAddrV6, ToSocketAddrs}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::tcp::{TcpStream, TcpListener, Incoming}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::udp::UdpSocket; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::parser::AddrParseError; mod ip; diff --git a/src/libstd/net/tcp.rs b/src/libstd/net/tcp.rs index 93a056faf53..fd2e61473f9 100644 --- a/src/libstd/net/tcp.rs +++ b/src/libstd/net/tcp.rs @@ -219,6 +219,7 @@ impl IntoInner<net_imp::TcpStream> for TcpStream { fn into_inner(self) -> net_imp::TcpStream { self.0 } } +#[stable(feature = "rust1", since = "1.0.0")] impl fmt::Debug for TcpStream { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.0.fmt(f) @@ -301,6 +302,7 @@ impl IntoInner<net_imp::TcpListener> for TcpListener { fn into_inner(self) -> net_imp::TcpListener { self.0 } } +#[stable(feature = "rust1", since = "1.0.0")] impl fmt::Debug for TcpListener { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.0.fmt(f) diff --git a/src/libstd/net/udp.rs b/src/libstd/net/udp.rs index 0d3d15401fd..b212d4d32aa 100644 --- a/src/libstd/net/udp.rs +++ b/src/libstd/net/udp.rs @@ -153,6 +153,7 @@ impl IntoInner<net_imp::UdpSocket> for UdpSocket { fn into_inner(self) -> net_imp::UdpSocket { self.0 } } +#[stable(feature = "rust1", since = "1.0.0")] impl fmt::Debug for UdpSocket { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { self.0.fmt(f) diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs index 439ed406489..ab25fe17c2c 100644 --- a/src/libstd/num/f32.rs +++ b/src/libstd/num/f32.rs @@ -20,10 +20,15 @@ use intrinsics; use libc::c_int; use num::{FpCategory, ParseFloatError}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f32::{RADIX, MANTISSA_DIGITS, DIGITS, EPSILON}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f32::{MIN_EXP, MAX_EXP, MIN_10_EXP}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f32::{MAX_10_EXP, NAN, INFINITY, NEG_INFINITY}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f32::{MIN, MIN_POSITIVE, MAX}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f32::consts; #[allow(dead_code)] diff --git a/src/libstd/num/f64.rs b/src/libstd/num/f64.rs index aa0e7df76ab..b392ab0c8da 100644 --- a/src/libstd/num/f64.rs +++ b/src/libstd/num/f64.rs @@ -20,10 +20,15 @@ use intrinsics; use libc::c_int; use num::{FpCategory, ParseFloatError}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f64::{RADIX, MANTISSA_DIGITS, DIGITS, EPSILON}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f64::{MIN_EXP, MAX_EXP, MIN_10_EXP}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f64::{MAX_10_EXP, NAN, INFINITY, NEG_INFINITY}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f64::{MIN, MIN_POSITIVE, MAX}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::f64::consts; #[allow(dead_code)] diff --git a/src/libstd/num/mod.rs b/src/libstd/num/mod.rs index d1ef763e0f6..8e207f5e6cf 100644 --- a/src/libstd/num/mod.rs +++ b/src/libstd/num/mod.rs @@ -16,8 +16,11 @@ #![stable(feature = "rust1", since = "1.0.0")] #![allow(missing_docs)] +#[stable(feature = "rust1", since = "1.0.0")] pub use core::num::{Zero, One}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::num::{FpCategory, ParseIntError, ParseFloatError}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::num::{wrapping, Wrapping}; #[cfg(test)] use cmp::PartialEq; diff --git a/src/libstd/os/linux/mod.rs b/src/libstd/os/linux/mod.rs index 146a74a4550..ea0b00c9998 100644 --- a/src/libstd/os/linux/mod.rs +++ b/src/libstd/os/linux/mod.rs @@ -14,7 +14,8 @@ pub mod raw; +#[stable(feature = "raw_ext", since = "1.1.0")] pub mod fs { - #![stable(feature = "raw_ext", since = "1.1.0")] + #[stable(feature = "raw_ext", since = "1.1.0")] pub use sys::fs::MetadataExt; } diff --git a/src/libstd/os/linux/raw.rs b/src/libstd/os/linux/raw.rs index d7abdef6b03..35de9bfc194 100644 --- a/src/libstd/os/linux/raw.rs +++ b/src/libstd/os/linux/raw.rs @@ -16,6 +16,7 @@ #[stable(feature = "raw_ext", since = "1.1.0")] pub type mode_t = u32; #[doc(inline)] +#[stable(feature = "raw_ext", since = "1.1.0")] pub use self::arch::{off_t, ino_t, nlink_t, blksize_t, blkcnt_t, stat, time_t}; #[cfg(any(target_arch = "x86", diff --git a/src/libstd/os/mod.rs b/src/libstd/os/mod.rs index 859cb900460..84b7d9fbeec 100644 --- a/src/libstd/os/mod.rs +++ b/src/libstd/os/mod.rs @@ -13,8 +13,12 @@ #![stable(feature = "os", since = "1.0.0")] #![allow(missing_docs, bad_style)] -#[cfg(unix)] pub use sys::ext as unix; -#[cfg(windows)] pub use sys::ext as windows; +#[cfg(unix)] +#[stable(feature = "rust1", since = "1.0.0")] +pub use sys::ext as unix; +#[cfg(windows)] +#[stable(feature = "rust1", since = "1.0.0")] +pub use sys::ext as windows; #[cfg(target_os = "android")] pub mod android; #[cfg(target_os = "bitrig")] pub mod bitrig; diff --git a/src/libstd/sync/barrier.rs b/src/libstd/sync/barrier.rs index 8360620c345..4df6ca5f0b8 100644 --- a/src/libstd/sync/barrier.rs +++ b/src/libstd/sync/barrier.rs @@ -46,6 +46,7 @@ struct BarrierState { /// /// Currently this opaque structure only has one method, `.is_leader()`. Only /// one thread will receive a result that will return `true` from this function. +#[stable(feature = "rust1", since = "1.0.0")] pub struct BarrierWaitResult(bool); impl Barrier { diff --git a/src/libstd/sync/mod.rs b/src/libstd/sync/mod.rs index 4544f30d4f4..e1b7930b6d8 100644 --- a/src/libstd/sync/mod.rs +++ b/src/libstd/sync/mod.rs @@ -17,17 +17,28 @@ #![stable(feature = "rust1", since = "1.0.0")] +#[stable(feature = "rust1", since = "1.0.0")] pub use alloc::arc::{Arc, Weak}; +#[stable(feature = "rust1", since = "1.0.0")] pub use core::sync::atomic; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::barrier::{Barrier, BarrierWaitResult}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::condvar::{Condvar, StaticCondvar, WaitTimeoutResult, CONDVAR_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::mutex::MUTEX_INIT; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::mutex::{Mutex, MutexGuard, StaticMutex}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::once::{Once, ONCE_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use sys_common::poison::{PoisonError, TryLockError, TryLockResult, LockResult}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::rwlock::{RwLockReadGuard, RwLockWriteGuard}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::rwlock::{RwLock, StaticRwLock, RW_LOCK_INIT}; +#[stable(feature = "rust1", since = "1.0.0")] pub use self::semaphore::{Semaphore, SemaphoreGuard}; pub mod mpsc; diff --git a/src/libstd/sync/mpsc/mod.rs b/src/libstd/sync/mpsc/mod.rs index a0d0147296a..e87ae19c583 100644 --- a/src/libstd/sync/mpsc/mod.rs +++ b/src/libstd/sync/mpsc/mod.rs @@ -272,6 +272,7 @@ use mem; use cell::UnsafeCell; use marker::Reflect; +#[unstable(feature = "mpsc_select", issue = "27800")] pub use self::select::{Select, Handle}; use self::select::StartResult; use self::select::StartResult::*; @@ -295,6 +296,7 @@ pub struct Receiver<T> { // The receiver port can be sent from place to place, so long as it // is not used to receive non-sendable things. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for Receiver<T> { } /// An iterator over messages on a receiver, this iterator will block @@ -322,6 +324,7 @@ pub struct Sender<T> { // The send port can be sent from place to place, so long as it // is not used to send non-sendable things. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for Sender<T> { } /// The sending-half of Rust's synchronous channel type. This half can only be @@ -331,8 +334,10 @@ pub struct SyncSender<T> { inner: Arc<UnsafeCell<sync::Packet<T>>>, } +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: Send> Send for SyncSender<T> {} +#[stable(feature = "rust1", since = "1.0.0")] impl<T> !Sync for SyncSender<T> {} /// An error returned from the `send` function on channels. @@ -954,6 +959,7 @@ impl<'a, T> IntoIterator for &'a Receiver<T> { fn into_iter(self) -> Iter<'a, T> { self.iter() } } +#[stable(feature = "receiver_into_iter", since = "1.1.0")] impl<T> Iterator for IntoIter<T> { type Item = T; fn next(&mut self) -> Option<T> { self.rx.recv().ok() } diff --git a/src/libstd/sync/mpsc/mpsc_queue.rs b/src/libstd/sync/mpsc/mpsc_queue.rs index e4eba3d3d20..6a6c19cfcc3 100644 --- a/src/libstd/sync/mpsc/mpsc_queue.rs +++ b/src/libstd/sync/mpsc/mpsc_queue.rs @@ -133,7 +133,6 @@ impl<T> Queue<T> { } } -#[stable(feature = "rust1", since = "1.0.0")] impl<T> Drop for Queue<T> { fn drop(&mut self) { unsafe { diff --git a/src/libstd/sync/mutex.rs b/src/libstd/sync/mutex.rs index 48631bfc5f9..5677c5538c4 100644 --- a/src/libstd/sync/mutex.rs +++ b/src/libstd/sync/mutex.rs @@ -125,8 +125,9 @@ pub struct Mutex<T: ?Sized> { // these are the only places where `T: Send` matters; all other // functionality works fine on a single thread. +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send> Send for Mutex<T> { } - +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send> Sync for Mutex<T> { } /// The static mutex type is provided to allow for static allocation of mutexes. @@ -175,6 +176,7 @@ pub struct MutexGuard<'a, T: ?Sized + 'a> { __poison: poison::Guard, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for MutexGuard<'a, T> {} /// Static initialization of a mutex. This constant can be used to initialize diff --git a/src/libstd/sync/rwlock.rs b/src/libstd/sync/rwlock.rs index 750c9e30c5c..4c236d21545 100644 --- a/src/libstd/sync/rwlock.rs +++ b/src/libstd/sync/rwlock.rs @@ -71,7 +71,9 @@ pub struct RwLock<T: ?Sized> { data: UnsafeCell<T>, } +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send + Sync> Send for RwLock<T> {} +#[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T: ?Sized + Send + Sync> Sync for RwLock<T> {} /// Structure representing a statically allocated RwLock. @@ -122,6 +124,7 @@ pub struct RwLockReadGuard<'a, T: ?Sized + 'a> { __data: &'a UnsafeCell<T>, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for RwLockReadGuard<'a, T> {} /// RAII structure used to release the exclusive write access of a lock when @@ -134,6 +137,7 @@ pub struct RwLockWriteGuard<'a, T: ?Sized + 'a> { __poison: poison::Guard, } +#[stable(feature = "rust1", since = "1.0.0")] impl<'a, T: ?Sized> !marker::Send for RwLockWriteGuard<'a, T> {} impl<T> RwLock<T> { diff --git a/src/libstd/sys/common/poison.rs b/src/libstd/sys/common/poison.rs index c6917d8fca5..446a4445b2d 100644 --- a/src/libstd/sys/common/poison.rs +++ b/src/libstd/sys/common/poison.rs @@ -110,6 +110,7 @@ impl<T> fmt::Display for PoisonError<T> { } } +#[stable(feature = "rust1", since = "1.0.0")] impl<T: Send + Reflect> Error for PoisonError<T> { fn description(&self) -> &str { "poisoned lock: another task failed inside" @@ -139,6 +140,7 @@ impl<T> PoisonError<T> { pub fn get_mut(&mut self) -> &mut T { &mut self.guard } } +#[stable(feature = "rust1", since = "1.0.0")] impl<T> From<PoisonError<T>> for TryLockError<T> { fn from(err: PoisonError<T>) -> TryLockError<T> { TryLockError::Poisoned(err) @@ -162,6 +164,7 @@ impl<T: Send + Reflect> fmt::Display for TryLockError<T> { } } +#[stable(feature = "rust1", since = "1.0.0")] impl<T: Send + Reflect> Error for TryLockError<T> { fn description(&self) -> &str { match *self { diff --git a/src/libstd/sys/common/unwind/mod.rs b/src/libstd/sys/common/unwind/mod.rs index e455d163ed9..aea5acc9071 100644 --- a/src/libstd/sys/common/unwind/mod.rs +++ b/src/libstd/sys/common/unwind/mod.rs @@ -203,6 +203,9 @@ pub extern fn rust_begin_unwind(msg: fmt::Arguments, /// site as much as possible (so that `panic!()` has as low an impact /// on (e.g.) the inlining of other functions as possible), by moving /// the actual formatting into this shared place. +#[unstable(feature = "libstd_sys_internals", + reason = "used by the panic! macro", + issue = "0")] #[inline(never)] #[cold] pub fn begin_unwind_fmt(msg: fmt::Arguments, file_line: &(&'static str, u32)) -> ! { use fmt::Write; @@ -218,6 +221,9 @@ pub fn begin_unwind_fmt(msg: fmt::Arguments, file_line: &(&'static str, u32)) -> } /// This is the entry point of unwinding for panic!() and assert!(). +#[unstable(feature = "libstd_sys_internals", + reason = "used by the panic! macro", + issue = "0")] #[inline(never)] #[cold] // avoid code bloat at the call sites as much as possible pub fn begin_unwind<M: Any + Send>(msg: M, file_line: &(&'static str, u32)) -> ! { // Note that this should be the only allocation performed in this code path. diff --git a/src/libstd/sys/common/wtf8.rs b/src/libstd/sys/common/wtf8.rs index 271aba680a2..702a34633dc 100644 --- a/src/libstd/sys/common/wtf8.rs +++ b/src/libstd/sys/common/wtf8.rs @@ -715,6 +715,7 @@ impl<'a> Iterator for Wtf8CodePoints<'a> { } } +#[stable(feature = "rust1", since = "1.0.0")] #[derive(Clone)] pub struct EncodeWide<'a> { code_points: Wtf8CodePoints<'a>, @@ -722,6 +723,7 @@ pub struct EncodeWide<'a> { } // Copied from libunicode/u_str.rs +#[stable(feature = "rust1", since = "1.0.0")] impl<'a> Iterator for EncodeWide<'a> { type Item = u16; diff --git a/src/libstd/sys/unix/ext/fs.rs b/src/libstd/sys/unix/ext/fs.rs index 5ef37ae51c9..d2a16b5de97 100644 --- a/src/libstd/sys/unix/ext/fs.rs +++ b/src/libstd/sys/unix/ext/fs.rs @@ -153,6 +153,7 @@ pub trait MetadataExt { fn blocks(&self) -> raw::blkcnt_t; } +#[stable(feature = "metadata_ext", since = "1.1.0")] impl MetadataExt for fs::Metadata { fn dev(&self) -> raw::dev_t { self.as_raw_stat().st_dev as raw::dev_t } fn ino(&self) -> raw::ino_t { self.as_raw_stat().st_ino as raw::ino_t } @@ -211,6 +212,7 @@ pub trait DirEntryExt { fn ino(&self) -> raw::ino_t; } +#[stable(feature = "dir_entry_ext", since = "1.1.0")] impl DirEntryExt for fs::DirEntry { fn ino(&self) -> raw::ino_t { self.as_inner().ino() } } @@ -253,6 +255,8 @@ pub trait DirBuilderExt { fn mode(&mut self, mode: raw::mode_t) -> &mut Self; } +#[unstable(feature = "dir_builder", reason = "recently added API", + issue = "27710")] impl DirBuilderExt for fs::DirBuilder { fn mode(&mut self, mode: raw::mode_t) -> &mut fs::DirBuilder { self.as_inner_mut().set_mode(mode); diff --git a/src/libstd/sys/unix/ext/mod.rs b/src/libstd/sys/unix/ext/mod.rs index 5b9f36cbc37..b57e325089d 100644 --- a/src/libstd/sys/unix/ext/mod.rs +++ b/src/libstd/sys/unix/ext/mod.rs @@ -40,13 +40,13 @@ pub mod raw; /// Includes all extension traits, and some important type definitions. #[stable(feature = "rust1", since = "1.0.0")] pub mod prelude { - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::io::{RawFd, AsRawFd, FromRawFd, IntoRawFd}; #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::ffi::{OsStrExt, OsStringExt}; - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::fs::{PermissionsExt, OpenOptionsExt, MetadataExt, FileTypeExt}; - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::fs::{DirEntryExt}; #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::process::{CommandExt, ExitStatusExt}; diff --git a/src/libstd/sys/unix/ext/process.rs b/src/libstd/sys/unix/ext/process.rs index 3e7260f0757..e1111f25db7 100644 --- a/src/libstd/sys/unix/ext/process.rs +++ b/src/libstd/sys/unix/ext/process.rs @@ -107,18 +107,21 @@ impl AsRawFd for process::ChildStderr { } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawFd for process::ChildStdin { fn into_raw_fd(self) -> RawFd { self.into_inner().into_fd().into_raw() } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawFd for process::ChildStdout { fn into_raw_fd(self) -> RawFd { self.into_inner().into_fd().into_raw() } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawFd for process::ChildStderr { fn into_raw_fd(self) -> RawFd { self.into_inner().into_fd().into_raw() diff --git a/src/libstd/sys/unix/ext/raw.rs b/src/libstd/sys/unix/ext/raw.rs index fa380abe6c5..8377e53f417 100644 --- a/src/libstd/sys/unix/ext/raw.rs +++ b/src/libstd/sys/unix/ext/raw.rs @@ -17,6 +17,8 @@ #[stable(feature = "raw_ext", since = "1.1.0")] pub type pid_t = i32; #[doc(inline)] +#[stable(feature = "raw_ext", since = "1.1.0")] pub use sys::platform::raw::{dev_t, ino_t, mode_t, nlink_t, off_t, blksize_t}; #[doc(inline)] +#[stable(feature = "raw_ext", since = "1.1.0")] pub use sys::platform::raw::{blkcnt_t, time_t}; diff --git a/src/libstd/sys/unix/time.rs b/src/libstd/sys/unix/time.rs index 5192f01269d..9b093f60f03 100644 --- a/src/libstd/sys/unix/time.rs +++ b/src/libstd/sys/unix/time.rs @@ -98,6 +98,7 @@ mod inner { } } + #[unstable(feature = "libstd_sys_internals", issue = "0")] impl<'a> Sub for &'a SteadyTime { type Output = Duration; diff --git a/src/libstd/sys/windows/ext/ffi.rs b/src/libstd/sys/windows/ext/ffi.rs index 3fa96f4dd13..253787546c1 100644 --- a/src/libstd/sys/windows/ext/ffi.rs +++ b/src/libstd/sys/windows/ext/ffi.rs @@ -17,6 +17,7 @@ use sys::os_str::Buf; use sys_common::wtf8::Wtf8Buf; use sys_common::{FromInner, AsInner}; +#[stable(feature = "rust1", since = "1.0.0")] pub use sys_common::wtf8::EncodeWide; /// Windows-specific extensions to `OsString`. diff --git a/src/libstd/sys/windows/ext/fs.rs b/src/libstd/sys/windows/ext/fs.rs index 9fe6527d89e..0d78d4de42b 100644 --- a/src/libstd/sys/windows/ext/fs.rs +++ b/src/libstd/sys/windows/ext/fs.rs @@ -49,6 +49,9 @@ pub trait OpenOptionsExt { fn share_mode(&mut self, val: u32) -> &mut Self; } +#[unstable(feature = "open_options_ext", + reason = "may require more thought/methods", + issue = "27720")] impl OpenOptionsExt for OpenOptions { fn desired_access(&mut self, access: u32) -> &mut OpenOptions { self.as_inner_mut().desired_access(access); self diff --git a/src/libstd/sys/windows/ext/mod.rs b/src/libstd/sys/windows/ext/mod.rs index f69c2d075e3..7f095ae7ff6 100644 --- a/src/libstd/sys/windows/ext/mod.rs +++ b/src/libstd/sys/windows/ext/mod.rs @@ -27,12 +27,12 @@ pub mod process; /// Includes all extension traits, and some important type definitions. #[stable(feature = "rust1", since = "1.0.0")] pub mod prelude { - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::io::{RawSocket, RawHandle, AsRawSocket, AsRawHandle}; - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::io::{FromRawSocket, FromRawHandle, IntoRawSocket, IntoRawHandle}; #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::ffi::{OsStrExt, OsStringExt}; - #[doc(no_inline)] + #[doc(no_inline)] #[stable(feature = "rust1", since = "1.0.0")] pub use super::fs::{OpenOptionsExt, MetadataExt}; } diff --git a/src/libstd/sys/windows/ext/process.rs b/src/libstd/sys/windows/ext/process.rs index fde21e9a798..dffe68915fb 100644 --- a/src/libstd/sys/windows/ext/process.rs +++ b/src/libstd/sys/windows/ext/process.rs @@ -32,6 +32,7 @@ impl AsRawHandle for process::Child { } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawHandle for process::Child { fn into_raw_handle(self) -> RawHandle { self.into_inner().into_handle().into_raw() as *mut _ @@ -59,18 +60,21 @@ impl AsRawHandle for process::ChildStderr { } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawHandle for process::ChildStdin { fn into_raw_handle(self) -> RawHandle { self.into_inner().into_handle().into_raw() as *mut _ } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawHandle for process::ChildStdout { fn into_raw_handle(self) -> RawHandle { self.into_inner().into_handle().into_raw() as *mut _ } } +#[stable(feature = "process_extensions", since = "1.2.0")] impl IntoRawHandle for process::ChildStderr { fn into_raw_handle(self) -> RawHandle { self.into_inner().into_handle().into_raw() as *mut _ diff --git a/src/libstd/sys/windows/time.rs b/src/libstd/sys/windows/time.rs index 4dc7997d22e..707e8c05e17 100644 --- a/src/libstd/sys/windows/time.rs +++ b/src/libstd/sys/windows/time.rs @@ -39,6 +39,7 @@ fn frequency() -> c::LARGE_INTEGER { } } +#[unstable(feature = "libstd_sys_internals", issue = "0")] impl<'a> Sub for &'a SteadyTime { type Output = Duration; diff --git a/src/libstd/thread/mod.rs b/src/libstd/thread/mod.rs index 75e3a52feea..84ceb9b0a51 100644 --- a/src/libstd/thread/mod.rs +++ b/src/libstd/thread/mod.rs @@ -189,7 +189,9 @@ pub use self::local::{LocalKey, LocalKeyState}; issue = "27715")] pub use self::scoped_tls::ScopedKey; +#[unstable(feature = "libstd_thread_internals", issue = "0")] #[doc(hidden)] pub use self::local::__KeyInner as __LocalKeyInner; +#[unstable(feature = "libstd_thread_internals", issue = "0")] #[doc(hidden)] pub use self::scoped_tls::__KeyInner as __ScopedKeyInner; //////////////////////////////////////////////////////////////////////////////// diff --git a/src/libstd/thread/scoped_tls.rs b/src/libstd/thread/scoped_tls.rs index 87f58b4c849..2c92bc504c8 100644 --- a/src/libstd/thread/scoped_tls.rs +++ b/src/libstd/thread/scoped_tls.rs @@ -65,6 +65,9 @@ pub struct ScopedKey<T:'static> { inner: fn() -> &'static imp::KeyInner<T> } /// /// See [ScopedKey documentation](thread/struct.ScopedKey.html) for more /// information. +#[unstable(feature = "thread_local_internals", + reason = "should not be necessary", + issue = "0")] #[macro_export] #[allow_internal_unstable] macro_rules! scoped_thread_local { @@ -80,7 +83,8 @@ macro_rules! scoped_thread_local { #[doc(hidden)] #[unstable(feature = "thread_local_internals", - reason = "should not be necessary")] + reason = "should not be necessary", + issue = "0")] #[macro_export] #[allow_internal_unstable] #[cfg(no_elf_tls)] @@ -95,7 +99,8 @@ macro_rules! __scoped_thread_local_inner { #[doc(hidden)] #[unstable(feature = "thread_local_internals", - reason = "should not be necessary")] + reason = "should not be necessary", + issue = "0")] #[macro_export] #[allow_internal_unstable] #[cfg(not(no_elf_tls))] diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index d18d7cbecf4..ca04ec81a28 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -102,6 +102,7 @@ impl Duration { pub fn subsec_nanos(&self) -> u32 { self.nanos } } +#[stable(feature = "duration", since = "1.3.0")] impl Add for Duration { type Output = Duration; @@ -118,6 +119,7 @@ impl Add for Duration { } } +#[stable(feature = "duration", since = "1.3.0")] impl Sub for Duration { type Output = Duration; @@ -136,6 +138,7 @@ impl Sub for Duration { } } +#[stable(feature = "duration", since = "1.3.0")] impl Mul<u32> for Duration { type Output = Duration; @@ -152,6 +155,7 @@ impl Mul<u32> for Duration { } } +#[stable(feature = "duration", since = "1.3.0")] impl Div<u32> for Duration { type Output = Duration; diff --git a/src/libstd/time/mod.rs b/src/libstd/time/mod.rs index 29df882a042..446fbae52f6 100644 --- a/src/libstd/time/mod.rs +++ b/src/libstd/time/mod.rs @@ -12,6 +12,7 @@ #![stable(feature = "time", since = "1.3.0")] +#[stable(feature = "time", since = "1.3.0")] pub use self::duration::Duration; mod duration; |
