Skip to content

Commit 948c11d

Browse files
author
Jakub Bukaj
committed
roll-up merge of #18960: stepancheg/cell-default
2 parents 816fc6c + 7eae5b4 commit 948c11d

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/libcore/cell.rs

Lines changed: 15 additions & 0 deletions
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};
@@ -213,6 +214,13 @@ impl<T:Copy> Clone for Cell<T> {
213214
}
214215
}
215216

217+
#[unstable]
218+
impl<T:Default + Copy> Default for Cell<T> {
219+
fn default() -> Cell<T> {
220+
Cell::new(Default::default())
221+
}
222+
}
223+
216224
#[unstable = "waiting for `PartialEq` trait to become stable"]
217225
impl<T:PartialEq + Copy> PartialEq for Cell<T> {
218226
fn eq(&self, other: &Cell<T>) -> bool {
@@ -339,6 +347,13 @@ impl<T: Clone> Clone for RefCell<T> {
339347
}
340348
}
341349

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

src/libcoretest/cell.rs

Lines changed: 13 additions & 0 deletions
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)