Merge pull request #322 from RalfJung/rc-tests
test new From instances for Rc
This commit is contained in:
commit
4b67bfab52
1 changed files with 18 additions and 2 deletions
|
|
@ -1,11 +1,11 @@
|
|||
use std::cell::RefCell;
|
||||
use std::rc::Rc;
|
||||
|
||||
fn rc_refcell() -> i32 {
|
||||
fn rc_refcell() {
|
||||
let r = Rc::new(RefCell::new(42));
|
||||
*r.borrow_mut() += 10;
|
||||
let x = *r.borrow();
|
||||
x
|
||||
assert_eq!(x, 52);
|
||||
}
|
||||
|
||||
fn rc_raw() {
|
||||
|
|
@ -17,7 +17,23 @@ fn rc_raw() {
|
|||
assert!(Rc::try_unwrap(r2).is_ok());
|
||||
}
|
||||
|
||||
// Make sure this Rc doesn't fall apart when touched
|
||||
fn check_unique_rc<T: ?Sized>(mut r: Rc<T>) {
|
||||
let r2 = r.clone();
|
||||
assert!(Rc::get_mut(&mut r).is_none());
|
||||
drop(r2);
|
||||
assert!(Rc::get_mut(&mut r).is_some());
|
||||
}
|
||||
|
||||
fn rc_from() {
|
||||
check_unique_rc::<[_]>(Rc::from(&[1,2,3] as &[_]));
|
||||
check_unique_rc::<[_]>(Rc::from(vec![1,2,3]));
|
||||
check_unique_rc::<[_]>(Rc::from(Box::new([1,2,3]) as Box<[_]>));
|
||||
check_unique_rc::<str>(Rc::from("Hello, World!"));
|
||||
}
|
||||
|
||||
fn main() {
|
||||
rc_refcell();
|
||||
rc_raw();
|
||||
rc_from();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue