From 45c62c08f9740dfcdf64c64c8b183acfc22fb3d6 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Mon, 9 Sep 2013 19:57:08 -0700 Subject: std: rename Option::unwrap_or_default() to unwrap_or() --- src/libstd/vec.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/libstd/vec.rs') diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 1ff58351886..55b8e3769ea 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -205,7 +205,7 @@ pub fn with_capacity(capacity: uint) -> ~[T] { */ #[inline] pub fn build(size: Option, builder: &fn(push: &fn(v: A))) -> ~[A] { - let mut vec = with_capacity(size.unwrap_or_default(4)); + let mut vec = with_capacity(size.unwrap_or(4)); builder(|x| vec.push(x)); vec } -- cgit 1.4.1-3-g733a5 From 2bd87ad432901f3baeab2fc1f2aa8aa328f04ea7 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Mon, 9 Sep 2013 19:32:56 -0700 Subject: std: Add Default implementation for vecs --- src/libstd/vec.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/libstd/vec.rs') diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index 55b8e3769ea..b91384f0ba5 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -104,6 +104,7 @@ use clone::{Clone, DeepClone}; use container::{Container, Mutable}; use cmp::{Eq, TotalOrd, Ordering, Less, Equal, Greater}; use cmp; +use default::Default; use iter::*; use libc::c_void; use num::{Integer, Zero, CheckedAdd, Saturating}; @@ -2236,6 +2237,19 @@ impl DeepClone for ~[A] { } } +// This works because every lifetime is a sub-lifetime of 'static +impl<'self, A> Default for &'self [A] { + fn default() -> &'self [A] { &'self [] } +} + +impl Default for ~[A] { + fn default() -> ~[A] { ~[] } +} + +impl Default for @[A] { + fn default() -> @[A] { @[] } +} + // This works because every lifetime is a sub-lifetime of 'static impl<'self, A> Zero for &'self [A] { fn zero() -> &'self [A] { &'self [] } -- cgit 1.4.1-3-g733a5 From 43aba856b4a8d1b2068f1f5c5017934442d2aedd Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Wed, 11 Sep 2013 22:16:22 -0700 Subject: std: Remove Zero impl from vec Vecs are not numeric types, so it doesn't make sense for them to implement Zero. --- src/libstd/vec.rs | 25 ++++--------------------- src/test/run-pass/deriving-zero.rs | 7 +++---- 2 files changed, 7 insertions(+), 25 deletions(-) (limited to 'src/libstd/vec.rs') diff --git a/src/libstd/vec.rs b/src/libstd/vec.rs index b91384f0ba5..47c3a079614 100644 --- a/src/libstd/vec.rs +++ b/src/libstd/vec.rs @@ -107,7 +107,7 @@ use cmp; use default::Default; use iter::*; use libc::c_void; -use num::{Integer, Zero, CheckedAdd, Saturating}; +use num::{Integer, CheckedAdd, Saturating}; use option::{None, Option, Some}; use ptr::to_unsafe_ptr; use ptr; @@ -2250,22 +2250,6 @@ impl Default for @[A] { fn default() -> @[A] { @[] } } -// This works because every lifetime is a sub-lifetime of 'static -impl<'self, A> Zero for &'self [A] { - fn zero() -> &'self [A] { &'self [] } - fn is_zero(&self) -> bool { self.is_empty() } -} - -impl Zero for ~[A] { - fn zero() -> ~[A] { ~[] } - fn is_zero(&self) -> bool { self.len() == 0 } -} - -impl Zero for @[A] { - fn zero() -> @[A] { @[] } - fn is_zero(&self) -> bool { self.len() == 0 } -} - macro_rules! iterator { /* FIXME: #4375 Cannot attach documentation/attributes to a macro generated struct. (struct $name:ident -> $ptr:ty, $elem:ty) => { @@ -3602,13 +3586,12 @@ mod tests { } #[test] - fn test_vec_zero() { - use num::Zero; + fn test_vec_default() { + use default::Default; macro_rules! t ( ($ty:ty) => {{ - let v: $ty = Zero::zero(); + let v: $ty = Default::default(); assert!(v.is_empty()); - assert!(v.is_zero()); }} ); diff --git a/src/test/run-pass/deriving-zero.rs b/src/test/run-pass/deriving-zero.rs index aba23e53282..9d92e2400ef 100644 --- a/src/test/run-pass/deriving-zero.rs +++ b/src/test/run-pass/deriving-zero.rs @@ -29,10 +29,9 @@ struct Lots { e: char, f: float, g: (f32, char), - h: ~[util::NonCopyable], - i: @mut (int, int), - j: bool, - k: (), + h: @mut (int, int), + i: bool, + j: (), } fn main() { -- cgit 1.4.1-3-g733a5