1
Fork 0

std: Add a bunch of Default impls

This commit is contained in:
Erick Tryzelaar 2013-09-11 21:49:25 -07:00
parent 38f97ea103
commit ca47eebb44
12 changed files with 82 additions and 5 deletions

View file

@ -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 {

View file

@ -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;
/**
@ -323,6 +325,11 @@ impl Eq for bool {
fn eq(&self, other: &bool) -> bool { (*self) == (*other) }
}
#[cfg(not(test))]
impl Default for bool {
fn default() -> bool { false }
}
#[cfg(not(test))]
impl Zero for bool {
fn zero() -> bool { false }

View file

@ -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
@ -434,9 +435,18 @@ impl Ord for char {
fn lt(&self, other: &char) -> bool { *self < *other }
}
#[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' }
}

View file

@ -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() }
}

View file

@ -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 }

View file

@ -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 }

View file

@ -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 }

View file

@ -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 }

View file

@ -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 }

View file

@ -459,6 +459,7 @@ impl<T: Default> Option<T> {
}
impl<T> Default for Option<T> {
#[inline]
fn default() -> Option<T> { None }
}

View file

@ -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;
$(
@ -172,6 +173,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]

View file

@ -45,6 +45,12 @@ impl TotalEq for () {
fn equals(&self, _other: &()) -> bool { true }
}
#[cfg(not(test))]
impl Default for () {
#[inline]
fn default() -> () { () }
}
#[cfg(not(test))]
impl Zero for () {
#[inline]
@ -52,8 +58,3 @@ impl Zero for () {
#[inline]
fn is_zero(&self) -> bool { true }
}
#[cfg(not(test))]
impl Default for () {
fn default() -> () { () }
}