Skip to content

Commit c46b5b5

Browse files
author
Jakub Bukaj
committed
rollup merge of rust-lang#18960: stepancheg/cell-default
2 parents f7be596 + 7eae5b4 commit c46b5b5

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/libcore/cell.rs

+15
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@
157157

158158
use clone::Clone;
159159
use cmp::PartialEq;
160+
use default::Default;
160161
use kinds::{marker, Copy};
161162
use ops::{Deref, DerefMut, Drop};
162163
use option::{None, Option, Some};
@@ -211,6 +212,13 @@ impl<T:Copy> Clone for Cell<T> {
211212
}
212213
}
213214

215+
#[unstable]
216+
impl<T:Default + Copy> Default for Cell<T> {
217+
fn default() -> Cell<T> {
218+
Cell::new(Default::default())
219+
}
220+
}
221+
214222
#[unstable = "waiting for `PartialEq` trait to become stable"]
215223
impl<T:PartialEq + Copy> PartialEq for Cell<T> {
216224
fn eq(&self, other: &Cell<T>) -> bool {
@@ -337,6 +345,13 @@ impl<T: Clone> Clone for RefCell<T> {
337345
}
338346
}
339347

348+
#[unstable]
349+
impl<T:Default> Default for RefCell<T> {
350+
fn default() -> RefCell<T> {
351+
RefCell::new(Default::default())
352+
}
353+
}
354+
340355
#[unstable = "waiting for `PartialEq` to become stable"]
341356
impl<T: PartialEq> PartialEq for RefCell<T> {
342357
fn eq(&self, other: &RefCell<T>) -> bool {

src/libcoretest/cell.rs

+13
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
// except according to those terms.
1010

1111
use core::cell::*;
12+
use core::default::Default;
1213
use std::mem::drop;
1314

1415
#[test]
@@ -146,3 +147,15 @@ fn as_unsafe_cell() {
146147
unsafe { *r2.as_unsafe_cell().get() = 1u; }
147148
assert_eq!(1u, *r2.borrow());
148149
}
150+
151+
#[test]
152+
fn cell_default() {
153+
let cell: Cell<u32> = Default::default();
154+
assert_eq!(0, cell.get());
155+
}
156+
157+
#[test]
158+
fn refcell_default() {
159+
let cell: RefCell<u64> = Default::default();
160+
assert_eq!(0, *cell.borrow());
161+
}

0 commit comments

Comments
 (0)