diff options
| -rw-r--r-- | src/libextra/uuid.rs | 7 | ||||
| -rw-r--r-- | src/libstd/bool.rs | 7 | ||||
| -rw-r--r-- | src/libstd/char.rs | 10 | ||||
| -rw-r--r-- | src/libstd/default.rs | 12 | ||||
| -rw-r--r-- | src/libstd/num/f32.rs | 6 | ||||
| -rw-r--r-- | src/libstd/num/f64.rs | 6 | ||||
| -rw-r--r-- | src/libstd/num/float.rs | 6 | ||||
| -rw-r--r-- | src/libstd/num/int_macros.rs | 6 | ||||
| -rw-r--r-- | src/libstd/num/uint_macros.rs | 6 | ||||
| -rw-r--r-- | src/libstd/option.rs | 1 | ||||
| -rw-r--r-- | src/libstd/tuple.rs | 9 | ||||
| -rw-r--r-- | src/libstd/unit.rs | 11 |
12 files changed, 82 insertions, 5 deletions
diff --git a/src/libextra/uuid.rs b/src/libextra/uuid.rs index b2c0f24824f..2641c1379e4 100644 --- a/src/libextra/uuid.rs +++ b/src/libextra/uuid.rs @@ -417,6 +417,13 @@ impl Uuid { } } +impl Default for Uuid { + /// Returns the nil UUID, which is all zeroes + fn default() -> Uuid { + Uuid::new_nil() + } +} + impl Zero for Uuid { /// Returns the nil UUID, which is all zeroes fn zero() -> Uuid { diff --git a/src/libstd/bool.rs b/src/libstd/bool.rs index 926e6e1f6b6..4ef50094139 100644 --- a/src/libstd/bool.rs +++ b/src/libstd/bool.rs @@ -24,6 +24,7 @@ Implementations of the following traits: * `Ord` * `TotalOrd` * `Eq` +* `Default` * `Zero` ## Various functions to compare `bool`s @@ -43,6 +44,7 @@ use to_str::ToStr; #[cfg(not(test))] use cmp::{Eq, Ord, TotalOrd, Ordering}; #[cfg(not(test))] use ops::Not; +#[cfg(not(test))] use default::Default; #[cfg(not(test))] use num::Zero; /** @@ -324,6 +326,11 @@ impl Eq for bool { } #[cfg(not(test))] +impl Default for bool { + fn default() -> bool { false } +} + +#[cfg(not(test))] impl Zero for bool { fn zero() -> bool { false } fn is_zero(&self) -> bool { *self == false } diff --git a/src/libstd/char.rs b/src/libstd/char.rs index 7f043b2ecaa..3a01e5908d9 100644 --- a/src/libstd/char.rs +++ b/src/libstd/char.rs @@ -21,6 +21,7 @@ use str; #[cfg(test)] use str::OwnedStr; #[cfg(not(test))] use cmp::{Eq, Ord}; +#[cfg(not(test))] use default::Default; #[cfg(not(test))] use num::Zero; // UTF-8 ranges and tags for encoding characters @@ -435,8 +436,17 @@ impl Ord for char { } #[cfg(not(test))] +impl Default for char { + #[inline] + fn default() -> char { '\x00' } +} + +#[cfg(not(test))] impl Zero for char { + #[inline] fn zero() -> char { '\x00' } + + #[inline] fn is_zero(&self) -> bool { *self == '\x00' } } diff --git a/src/libstd/default.rs b/src/libstd/default.rs index fbc60ffd01b..120cf3fa801 100644 --- a/src/libstd/default.rs +++ b/src/libstd/default.rs @@ -15,3 +15,15 @@ pub trait Default { /// Return the "default value" for a type. fn default() -> Self; } + +impl<T: Default + 'static> Default for @mut T { + fn default() -> @mut T { @mut Default::default() } +} + +impl<T: Default + 'static> Default for @T { + fn default() -> @T { @Default::default() } +} + +impl<T: Default> Default for ~T { + fn default() -> ~T { ~Default::default() } +} diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs index 899d6236aaa..0addcce3eb6 100644 --- a/src/libstd/num/f32.rs +++ b/src/libstd/num/f32.rs @@ -12,6 +12,7 @@ #[allow(missing_doc)]; #[allow(non_uppercase_statics)]; +use default::Default; use libc::c_int; use num::{Zero, One, strconv}; use num::{FPCategory, FPNaN, FPInfinite , FPZero, FPSubnormal, FPNormal}; @@ -237,6 +238,11 @@ impl Orderable for f32 { } } +impl Default for f32 { + #[inline] + fn default() -> f32 { 0.0 } +} + impl Zero for f32 { #[inline] fn zero() -> f32 { 0.0 } diff --git a/src/libstd/num/f64.rs b/src/libstd/num/f64.rs index 6ab8350a115..b0675278238 100644 --- a/src/libstd/num/f64.rs +++ b/src/libstd/num/f64.rs @@ -13,6 +13,7 @@ #[allow(missing_doc)]; #[allow(non_uppercase_statics)]; +use default::Default; use libc::c_int; use num::{Zero, One, strconv}; use num::{FPCategory, FPNaN, FPInfinite , FPZero, FPSubnormal, FPNormal}; @@ -260,6 +261,11 @@ impl Orderable for f64 { } } +impl Default for f64 { + #[inline] + fn default() -> f64 { 0.0 } +} + impl Zero for f64 { #[inline] fn zero() -> f64 { 0.0 } diff --git a/src/libstd/num/float.rs b/src/libstd/num/float.rs index df26fadae16..3952f5478f7 100644 --- a/src/libstd/num/float.rs +++ b/src/libstd/num/float.rs @@ -23,6 +23,7 @@ #[allow(missing_doc)]; #[allow(non_uppercase_statics)]; +use default::Default; use num::{Zero, One, strconv}; use num::FPCategory; use num; @@ -382,6 +383,11 @@ impl Orderable for float { } } +impl Default for float { + #[inline] + fn default() -> float { 0.0 } +} + impl Zero for float { #[inline] fn zero() -> float { 0.0 } diff --git a/src/libstd/num/int_macros.rs b/src/libstd/num/int_macros.rs index 07cafb0a4f1..ae2a56b835d 100644 --- a/src/libstd/num/int_macros.rs +++ b/src/libstd/num/int_macros.rs @@ -16,6 +16,7 @@ macro_rules! int_module (($T:ty, $bits:expr) => (mod generated { #[allow(non_uppercase_statics)]; +use default::Default; use num::{ToStrRadix, FromStrRadix}; use num::{CheckedDiv, Zero, One, strconv}; use prelude::*; @@ -167,6 +168,11 @@ impl Orderable for $T { } } +impl Default for $T { + #[inline] + fn default() -> $T { 0 } +} + impl Zero for $T { #[inline] fn zero() -> $T { 0 } diff --git a/src/libstd/num/uint_macros.rs b/src/libstd/num/uint_macros.rs index effeb60fc22..3deb7312b04 100644 --- a/src/libstd/num/uint_macros.rs +++ b/src/libstd/num/uint_macros.rs @@ -16,6 +16,7 @@ macro_rules! uint_module (($T:ty, $T_SIGNED:ty, $bits:expr) => (mod generated { #[allow(non_uppercase_statics)]; +use default::Default; use num::BitCount; use num::{ToStrRadix, FromStrRadix}; use num::{CheckedDiv, Zero, One, strconv}; @@ -172,6 +173,11 @@ impl Orderable for $T { } } +impl Default for $T { + #[inline] + fn default() -> $T { 0 } +} + impl Zero for $T { #[inline] fn zero() -> $T { 0 } diff --git a/src/libstd/option.rs b/src/libstd/option.rs index 9b5b28d5ceb..dd5b71c6dd4 100644 --- a/src/libstd/option.rs +++ b/src/libstd/option.rs @@ -459,6 +459,7 @@ impl<T: Default> Option<T> { } impl<T> Default for Option<T> { + #[inline] fn default() -> Option<T> { None } } diff --git a/src/libstd/tuple.rs b/src/libstd/tuple.rs index 5d9ca6202e2..2591131f215 100644 --- a/src/libstd/tuple.rs +++ b/src/libstd/tuple.rs @@ -89,6 +89,7 @@ macro_rules! tuple_impls { pub mod inner { use clone::Clone; #[cfg(not(test))] use cmp::*; + #[cfg(not(test))] use default::Default; #[cfg(not(test))] use num::Zero; $( @@ -173,6 +174,14 @@ macro_rules! tuple_impls { } #[cfg(not(test))] + impl<$($T:Default),+> Default for ($($T,)+) { + #[inline] + fn default() -> ($($T,)+) { + ($({ let x: $T = Default::default(); x},)+) + } + } + + #[cfg(not(test))] impl<$($T:Zero),+> Zero for ($($T,)+) { #[inline] fn zero() -> ($($T,)+) { diff --git a/src/libstd/unit.rs b/src/libstd/unit.rs index 3af0322df56..dfe4abe54e5 100644 --- a/src/libstd/unit.rs +++ b/src/libstd/unit.rs @@ -46,14 +46,15 @@ impl TotalEq for () { } #[cfg(not(test))] +impl Default for () { + #[inline] + fn default() -> () { () } +} + +#[cfg(not(test))] impl Zero for () { #[inline] fn zero() -> () { () } #[inline] fn is_zero(&self) -> bool { true } } - -#[cfg(not(test))] -impl Default for () { - fn default() -> () { () } -} |
