diff options
| author | Jakub Bukaj <jakub@jakub.cc> | 2014-11-16 10:21:01 +0100 |
|---|---|---|
| committer | Jakub Bukaj <jakub@jakub.cc> | 2014-11-16 10:21:01 +0100 |
| commit | c46b5b5314377fcbac3ba8facfcad98f4bc8aae6 (patch) | |
| tree | 4bdf63b0f955568a37b852c734444c4c59d04d91 | |
| parent | f7be5966dc745509e6eaad3dc1de89448baad1f8 (diff) | |
| parent | 7eae5b458993b8a030ed9bb6e65c12babc4bbe4b (diff) | |
| download | rust-c46b5b5314377fcbac3ba8facfcad98f4bc8aae6.tar.gz rust-c46b5b5314377fcbac3ba8facfcad98f4bc8aae6.zip | |
rollup merge of #18960: stepancheg/cell-default
| -rw-r--r-- | src/libcore/cell.rs | 15 | ||||
| -rw-r--r-- | src/libcoretest/cell.rs | 13 |
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()); +} |
