Merge pull request #322 from RalfJung/rc-tests

test new From instances for Rc
This commit is contained in:
Ralf Jung 2017-08-29 17:31:38 +02:00 committed by GitHub
commit 4b67bfab52

View file

@ -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();
}