1 //! Test for `boxed` mod.
5 use core::result::Result::{Err, Ok};
6 use core::clone::Clone;
13 fn test_owned_clone() {
15 let b: Box<i32> = a.clone();
19 #[derive(PartialEq, Eq)]
24 let a = Box::new(8) as Box<dyn Any>;
25 let b = Box::new(Test) as Box<dyn Any>;
27 match a.downcast::<i32>() {
29 assert!(a == Box::new(8));
33 match b.downcast::<Test>() {
35 assert!(a == Box::new(Test));
40 let a = Box::new(8) as Box<dyn Any>;
41 let b = Box::new(Test) as Box<dyn Any>;
43 assert!(a.downcast::<Box<Test>>().is_err());
44 assert!(b.downcast::<Box<i32>>().is_err());
49 let a = Box::new(8) as Box<dyn Any>;
50 let b = Box::new(Test) as Box<dyn Any>;
51 let a_str = format!("{:?}", a);
52 let b_str = format!("{:?}", b);
53 assert_eq!(a_str, "Any");
54 assert_eq!(b_str, "Any");
56 static EIGHT: usize = 8;
57 static TEST: Test = Test;
58 let a = &EIGHT as &dyn Any;
59 let b = &TEST as &dyn Any;
60 let s = format!("{:?}", a);
62 let s = format!("{:?}", b);
68 fn homura<T: Deref<Target = i32>>(_: T) {}
69 homura(Box::new(765));
75 let p = Box::into_raw(x);
79 let y = Box::from_raw(p);
88 fn set(&mut self, value: u32);
94 fn get(&self) -> u32 {
98 fn set(&mut self, value: u32) {
103 let x: Box<dyn Foo> = Box::new(Bar(17));
104 let p = Box::into_raw(x);
106 assert_eq!(17, (*p).get());
108 let y: Box<dyn Foo> = Box::from_raw(p);
109 assert_eq!(19, y.get());
115 let slice: &[f64] = &[-1.0, 0.0, 1.0, f64::INFINITY];
116 let boxed: Box<[f64]> = Box::from(slice);
117 assert_eq!(&*boxed, slice)
122 let slice: &[i64] = &[i64::MIN, -2, -1, 0, 1, 2, i64::MAX];
123 let boxed: Box<[i64]> = Box::from(slice);
124 assert_eq!(&*boxed, slice)
129 let s = "Hello, world!";
130 let boxed: Box<str> = Box::from(s);
131 assert_eq!(&*boxed, s)
135 fn boxed_slice_from_iter() {
137 let boxed: Box<[u32]> = iter.collect();
138 assert_eq!(boxed.len(), 100);
139 assert_eq!(boxed[7], 7);