about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJakub Bukaj <jakub@jakub.cc>2014-11-16 10:21:01 +0100
committerJakub Bukaj <jakub@jakub.cc>2014-11-16 10:21:01 +0100
commitc46b5b5314377fcbac3ba8facfcad98f4bc8aae6 (patch)
tree4bdf63b0f955568a37b852c734444c4c59d04d91
parentf7be5966dc745509e6eaad3dc1de89448baad1f8 (diff)
parent7eae5b458993b8a030ed9bb6e65c12babc4bbe4b (diff)
downloadrust-c46b5b5314377fcbac3ba8facfcad98f4bc8aae6.tar.gz
rust-c46b5b5314377fcbac3ba8facfcad98f4bc8aae6.zip
rollup merge of #18960: stepancheg/cell-default
-rw-r--r--src/libcore/cell.rs15
-rw-r--r--src/libcoretest/cell.rs13
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libcore/cell.rs b/src/libcore/cell.rs
index 6f87ff52662..f4932eac8e9 100644
--- a/src/libcore/cell.rs
+++ b/src/libcore/cell.rs
@@ -157,6 +157,7 @@
 
 use clone::Clone;
 use cmp::PartialEq;
+use default::Default;
 use kinds::{marker, Copy};
 use ops::{Deref, DerefMut, Drop};
 use option::{None, Option, Some};
@@ -211,6 +212,13 @@ impl<T:Copy> Clone for Cell<T> {
     }
 }
 
+#[unstable]
+impl<T:Default + Copy> Default for Cell<T> {
+    fn default() -> Cell<T> {
+        Cell::new(Default::default())
+    }
+}
+
 #[unstable = "waiting for `PartialEq` trait to become stable"]
 impl<T:PartialEq + Copy> PartialEq for Cell<T> {
     fn eq(&self, other: &Cell<T>) -> bool {
@@ -337,6 +345,13 @@ impl<T: Clone> Clone for RefCell<T> {
     }
 }
 
+#[unstable]
+impl<T:Default> Default for RefCell<T> {
+    fn default() -> RefCell<T> {
+        RefCell::new(Default::default())
+    }
+}
+
 #[unstable = "waiting for `PartialEq` to become stable"]
 impl<T: PartialEq> PartialEq for RefCell<T> {
     fn eq(&self, other: &RefCell<T>) -> bool {
diff --git a/src/libcoretest/cell.rs b/src/libcoretest/cell.rs
index 59365045f43..6444cf7ee0e 100644
--- a/src/libcoretest/cell.rs
+++ b/src/libcoretest/cell.rs
@@ -9,6 +9,7 @@
 // except according to those terms.
 
 use core::cell::*;
+use core::default::Default;
 use std::mem::drop;
 
 #[test]
@@ -146,3 +147,15 @@ fn as_unsafe_cell() {
     unsafe { *r2.as_unsafe_cell().get() = 1u; }
     assert_eq!(1u, *r2.borrow());
 }
+
+#[test]
+fn cell_default() {
+    let cell: Cell<u32> = Default::default();
+    assert_eq!(0, cell.get());
+}
+
+#[test]
+fn refcell_default() {
+    let cell: RefCell<u64> = Default::default();
+    assert_eq!(0, *cell.borrow());
+}