diff --git a/src/liballoc/arc.rs b/src/liballoc/arc.rs index 1f1909fd33cc1..876f335406fa2 100644 --- a/src/liballoc/arc.rs +++ b/src/liballoc/arc.rs @@ -316,7 +316,9 @@ impl fmt::Show for Arc { } } +#[stable] impl Default for Arc { + #[stable] fn default() -> Arc { Arc::new(Default::default()) } } diff --git a/src/liballoc/boxed.rs b/src/liballoc/boxed.rs index b0ba20b013357..8fb441c374fdd 100644 --- a/src/liballoc/boxed.rs +++ b/src/liballoc/boxed.rs @@ -44,11 +44,15 @@ pub static HEAP: () = (); #[unstable = "custom allocators will add an additional type parameter (with default)"] pub struct Box(*mut T); +#[stable] impl Default for Box { + #[stable] fn default() -> Box { box Default::default() } } +#[stable] impl Default for Box<[T]> { + #[stable] fn default() -> Box<[T]> { box [] } } diff --git a/src/liballoc/rc.rs b/src/liballoc/rc.rs index 217c898e661a0..636bf48e876e1 100644 --- a/src/liballoc/rc.rs +++ b/src/liballoc/rc.rs @@ -447,6 +447,7 @@ impl Default for Rc { /// let x: Rc = Default::default(); /// ``` #[inline] + #[stable] fn default() -> Rc { Rc::new(Default::default()) } diff --git a/src/libcollections/binary_heap.rs b/src/libcollections/binary_heap.rs index b107d6640a3cc..9421159269896 100644 --- a/src/libcollections/binary_heap.rs +++ b/src/libcollections/binary_heap.rs @@ -172,8 +172,10 @@ pub struct BinaryHeap { data: Vec, } +#[stable] impl Default for BinaryHeap { #[inline] + #[stable] fn default() -> BinaryHeap { BinaryHeap::new() } } diff --git a/src/libcollections/bit.rs b/src/libcollections/bit.rs index a0c4f6e7ee8c7..5d8d1084169e7 100644 --- a/src/libcollections/bit.rs +++ b/src/libcollections/bit.rs @@ -824,8 +824,10 @@ pub fn from_fn(len: uint, mut f: F) -> Bitv where F: FnMut(uint) -> bool { bitv } +#[stable] impl Default for Bitv { #[inline] + #[stable] fn default() -> Bitv { Bitv::new() } } diff --git a/src/libcollections/btree/map.rs b/src/libcollections/btree/map.rs index e49a8ddbe5ab8..dff2c070b57ab 100644 --- a/src/libcollections/btree/map.rs +++ b/src/libcollections/btree/map.rs @@ -836,7 +836,9 @@ impl, V: Hash> Hash for BTreeMap { } } +#[stable] impl Default for BTreeMap { + #[stable] fn default() -> BTreeMap { BTreeMap::new() } diff --git a/src/libcollections/btree/set.rs b/src/libcollections/btree/set.rs index c6d1898b87efe..172d7ea02eedd 100644 --- a/src/libcollections/btree/set.rs +++ b/src/libcollections/btree/set.rs @@ -436,7 +436,9 @@ impl Extend for BTreeSet { } } +#[stable] impl Default for BTreeSet { + #[stable] fn default() -> BTreeSet { BTreeSet::new() } diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index df86ac96424b5..bc4bd64092a7f 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -192,8 +192,10 @@ impl DList { } } +#[stable] impl Default for DList { #[inline] + #[stable] fn default() -> DList { DList::new() } } diff --git a/src/libcollections/hash/sip.rs b/src/libcollections/hash/sip.rs index 9a7aa8c20d3a1..60042b5ebd82b 100644 --- a/src/libcollections/hash/sip.rs +++ b/src/libcollections/hash/sip.rs @@ -204,8 +204,10 @@ impl Clone for SipState { } } +#[stable] impl Default for SipState { #[inline] + #[stable] fn default() -> SipState { SipState::new() } diff --git a/src/libcollections/ring_buf.rs b/src/libcollections/ring_buf.rs index 084b585d7b99d..5a29d7c085ea5 100644 --- a/src/libcollections/ring_buf.rs +++ b/src/libcollections/ring_buf.rs @@ -68,7 +68,9 @@ impl Drop for RingBuf { } } +#[stable] impl Default for RingBuf { + #[stable] #[inline] fn default() -> RingBuf { RingBuf::new() } } diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index f3a9e7b186758..505b6367d883b 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -826,6 +826,7 @@ impl StrAllocating for String { #[stable] impl Default for String { + #[stable] fn default() -> String { String::new() } diff --git a/src/libcollections/tree/map.rs b/src/libcollections/tree/map.rs index 5c2cf4a81808d..2b14f9569b0cf 100644 --- a/src/libcollections/tree/map.rs +++ b/src/libcollections/tree/map.rs @@ -185,8 +185,10 @@ impl Show for TreeMap { } } +#[stable] impl Default for TreeMap { #[inline] + #[stable] fn default() -> TreeMap { TreeMap::new() } } diff --git a/src/libcollections/tree/set.rs b/src/libcollections/tree/set.rs index 6a0986d32837f..c3aebc2736c96 100644 --- a/src/libcollections/tree/set.rs +++ b/src/libcollections/tree/set.rs @@ -134,8 +134,10 @@ impl Show for TreeSet { } } +#[stable] impl Default for TreeSet { #[inline] + #[stable] fn default() -> TreeSet { TreeSet::new() } } diff --git a/src/libcollections/trie/map.rs b/src/libcollections/trie/map.rs index a4dee8076487d..67c5407eb6e5b 100644 --- a/src/libcollections/trie/map.rs +++ b/src/libcollections/trie/map.rs @@ -150,8 +150,10 @@ impl Show for TrieMap { } } +#[stable] impl Default for TrieMap { #[inline] + #[stable] fn default() -> TrieMap { TrieMap::new() } } diff --git a/src/libcollections/trie/set.rs b/src/libcollections/trie/set.rs index 7b7b4d8280b78..5d24673ae751c 100644 --- a/src/libcollections/trie/set.rs +++ b/src/libcollections/trie/set.rs @@ -69,8 +69,10 @@ impl Show for TrieSet { } } +#[stable] impl Default for TrieSet { #[inline] + #[stable] fn default() -> TrieSet { TrieSet::new() } } diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 275825da3b55f..d6ab2c9a75f90 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -1322,6 +1322,7 @@ impl Drop for Vec { #[stable] impl Default for Vec { + #[stable] fn default() -> Vec { Vec::new() } diff --git a/src/libcollections/vec_map.rs b/src/libcollections/vec_map.rs index cc2fd0a664690..d3f28e4a8c8bb 100644 --- a/src/libcollections/vec_map.rs +++ b/src/libcollections/vec_map.rs @@ -66,7 +66,9 @@ pub struct VecMap { v: Vec>, } +#[stable] impl Default for VecMap { + #[stable] #[inline] fn default() -> VecMap { VecMap::new() } } diff --git a/src/libcore/cell.rs b/src/libcore/cell.rs index 1ec2efaf801a4..1e09cf9d5c28c 100644 --- a/src/libcore/cell.rs +++ b/src/libcore/cell.rs @@ -215,8 +215,9 @@ impl Clone for Cell { } } -#[unstable] +#[stable] impl Default for Cell { + #[stable] fn default() -> Cell { Cell::new(Default::default()) } @@ -349,8 +350,9 @@ impl Clone for RefCell { } } -#[unstable] +#[stable] impl Default for RefCell { + #[stable] fn default() -> RefCell { RefCell::new(Default::default()) } diff --git a/src/libcore/default.rs b/src/libcore/default.rs index 269a456542cb0..10facfe4750f9 100644 --- a/src/libcore/default.rs +++ b/src/libcore/default.rs @@ -97,6 +97,7 @@ /// bar: f32, /// } /// ``` +#[stable] pub trait Default { /// Returns the "default value" for a type. /// @@ -130,13 +131,16 @@ pub trait Default { /// fn default() -> Kind { Kind::A } /// } /// ``` + #[stable] fn default() -> Self; } macro_rules! default_impl( ($t:ty, $v:expr) => { + #[stable] impl Default for $t { #[inline] + #[stable] fn default() -> $t { $v } } } diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs index 2fc4d23e7fd74..e2afee9905d7f 100644 --- a/src/libcore/intrinsics.rs +++ b/src/libcore/intrinsics.rs @@ -217,6 +217,7 @@ extern "rust-intrinsic" { /// /// `forget` is unsafe because the caller is responsible for /// ensuring the argument is deallocated already. + #[stable] pub fn forget(_: T) -> (); /// Unsafely transforms a value of one type into a value of another type. @@ -232,6 +233,7 @@ extern "rust-intrinsic" { /// let v: &[u8] = unsafe { mem::transmute("L") }; /// assert!(v == [76u8]); /// ``` + #[stable] pub fn transmute(e: T) -> U; /// Gives the address for the return value of the enclosing function. diff --git a/src/libcore/mem.rs b/src/libcore/mem.rs index 937f73a326271..6747d12e0284a 100644 --- a/src/libcore/mem.rs +++ b/src/libcore/mem.rs @@ -13,9 +13,13 @@ //! This module contains functions for querying the size and alignment of //! types, initializing and manipulating memory. +#![stable] + +use kinds::Sized; use intrinsics; use ptr; +#[stable] pub use intrinsics::transmute; /// Moves a thing into the void. @@ -223,7 +227,8 @@ pub unsafe fn transmute_copy(src: &T) -> U { #[inline] #[unstable = "this function may be removed in the future due to its \ questionable utility"] -pub unsafe fn copy_lifetime<'a, S, T:'a>(_ptr: &'a S, ptr: &T) -> &'a T { +pub unsafe fn copy_lifetime<'a, Sized? S, Sized? T: 'a>(_ptr: &'a S, + ptr: &T) -> &'a T { transmute(ptr) } @@ -231,7 +236,8 @@ pub unsafe fn copy_lifetime<'a, S, T:'a>(_ptr: &'a S, ptr: &T) -> &'a T { #[inline] #[unstable = "this function may be removed in the future due to its \ questionable utility"] -pub unsafe fn copy_mut_lifetime<'a, S, T:'a>(_ptr: &'a mut S, - ptr: &mut T) -> &'a mut T { +pub unsafe fn copy_mut_lifetime<'a, Sized? S, Sized? T: 'a>(_ptr: &'a mut S, + ptr: &mut T) + -> &'a mut T { transmute(ptr) } diff --git a/src/libcore/option.rs b/src/libcore/option.rs index 7be47f73e9ee7..51f19d8f90601 100644 --- a/src/libcore/option.rs +++ b/src/libcore/option.rs @@ -760,6 +760,7 @@ impl AsSlice for Option { #[stable] impl Default for Option { + #[stable] #[inline] fn default() -> Option { None } } diff --git a/src/libcore/slice.rs b/src/libcore/slice.rs index 27a4328ba8017..22d40797f719e 100644 --- a/src/libcore/slice.rs +++ b/src/libcore/slice.rs @@ -1044,8 +1044,9 @@ impl<'a, T, Sized? U: AsSlice> AsSlice for &'a mut U { fn as_slice<'a>(&'a self) -> &'a [T] { AsSlice::as_slice(*self) } } -#[unstable = "waiting for DST"] +#[stable] impl<'a, T> Default for &'a [T] { + #[stable] fn default() -> &'a [T] { &[] } } diff --git a/src/libcore/str.rs b/src/libcore/str.rs index e632934782c69..e85d5a3e3151b 100644 --- a/src/libcore/str.rs +++ b/src/libcore/str.rs @@ -2349,7 +2349,9 @@ impl StrPrelude for str { fn len(&self) -> uint { self.repr().len } } +#[stable] impl<'a> Default for &'a str { + #[stable] fn default() -> &'a str { "" } } diff --git a/src/libcore/tuple/mod.rs b/src/libcore/tuple/mod.rs index 8160424be292c..5ea84f7db9179 100644 --- a/src/libcore/tuple/mod.rs +++ b/src/libcore/tuple/mod.rs @@ -182,6 +182,7 @@ macro_rules! tuple_impls { #[stable] impl<$($T:Default),+> Default for ($($T,)+) { + #[stable] #[inline] fn default() -> ($($T,)+) { ($({ let x: $T = Default::default(); x},)+) diff --git a/src/librand/reseeding.rs b/src/librand/reseeding.rs index 88c870579e690..46ee67940f269 100644 --- a/src/librand/reseeding.rs +++ b/src/librand/reseeding.rs @@ -142,7 +142,9 @@ impl Reseeder for ReseedWithDefault { *rng = Default::default(); } } +#[stable] impl Default for ReseedWithDefault { + #[stable] fn default() -> ReseedWithDefault { ReseedWithDefault } } diff --git a/src/libstd/collections/hash/map.rs b/src/libstd/collections/hash/map.rs index 2a8d97eed05bc..b245f167e9d58 100644 --- a/src/libstd/collections/hash/map.rs +++ b/src/libstd/collections/hash/map.rs @@ -1288,7 +1288,9 @@ impl + Show, V: Show, S, H: Hasher> Show for HashMap } } +#[stable] impl, V, S, H: Hasher + Default> Default for HashMap { + #[stable] fn default() -> HashMap { HashMap::with_hasher(Default::default()) } diff --git a/src/libstd/collections/hash/set.rs b/src/libstd/collections/hash/set.rs index 745a8298ee8a5..ca8d2df4651a2 100644 --- a/src/libstd/collections/hash/set.rs +++ b/src/libstd/collections/hash/set.rs @@ -610,7 +610,9 @@ impl, S, H: Hasher + Default> Extend for HashSet { } } +#[stable] impl, S, H: Hasher + Default> Default for HashSet { + #[stable] fn default() -> HashSet { HashSet::with_hasher(Default::default()) } diff --git a/src/libstd/hash.rs b/src/libstd/hash.rs index ac68e1ef121fb..b2fac31853d92 100644 --- a/src/libstd/hash.rs +++ b/src/libstd/hash.rs @@ -95,7 +95,9 @@ impl Hasher for RandomSipHasher { } } +#[stable] impl Default for RandomSipHasher { + #[stable] #[inline] fn default() -> RandomSipHasher { RandomSipHasher::new() diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 4baeaabc6c6a5..b9139c5d0e23a 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1911,7 +1911,9 @@ bitflags! { } +#[stable] impl Default for FilePermission { + #[stable] #[inline] fn default() -> FilePermission { FilePermission::empty() } }