]>
git.proxmox.com Git - rustc.git/blob - src/liballoc/tests.rs
1 //! Test for `boxed` mod.
4 use core
::clone
::Clone
;
5 use core
::convert
::TryInto
;
7 use core
::result
::Result
::{Err, Ok}
;
12 fn test_owned_clone() {
14 let b
: Box
<i32> = a
.clone();
18 #[derive(PartialEq, Eq)]
23 let a
= Box
::new(8) as Box
<dyn Any
>;
24 let b
= Box
::new(Test
) as Box
<dyn Any
>;
26 match a
.downcast
::<i32>() {
28 assert
!(a
== Box
::new(8));
32 match b
.downcast
::<Test
>() {
34 assert
!(a
== Box
::new(Test
));
39 let a
= Box
::new(8) as Box
<dyn Any
>;
40 let b
= Box
::new(Test
) as Box
<dyn Any
>;
42 assert
!(a
.downcast
::<Box
<Test
>>().is_err());
43 assert
!(b
.downcast
::<Box
<i32>>().is_err());
48 let a
= Box
::new(8) as Box
<dyn Any
>;
49 let b
= Box
::new(Test
) as Box
<dyn Any
>;
50 let a_str
= format
!("{:?}", a
);
51 let b_str
= format
!("{:?}", b
);
52 assert_eq
!(a_str
, "Any");
53 assert_eq
!(b_str
, "Any");
55 static EIGHT
: usize = 8;
56 static TEST
: Test
= Test
;
57 let a
= &EIGHT
as &dyn Any
;
58 let b
= &TEST
as &dyn Any
;
59 let s
= format
!("{:?}", a
);
61 let s
= format
!("{:?}", b
);
67 fn homura
<T
: Deref
<Target
= i32>>(_
: T
) {}
68 homura(Box
::new(765));
74 let p
= Box
::into_raw(x
);
78 let y
= Box
::from_raw(p
);
87 fn set(&mut self, value
: u32);
93 fn get(&self) -> u32 {
97 fn set(&mut self, value
: u32) {
102 let x
: Box
<dyn Foo
> = Box
::new(Bar(17));
103 let p
= Box
::into_raw(x
);
105 assert_eq
!(17, (*p
).get());
107 let y
: Box
<dyn Foo
> = Box
::from_raw(p
);
108 assert_eq
!(19, y
.get());
114 let slice
: &[f64] = &[-1.0, 0.0, 1.0, f64::INFINITY
];
115 let boxed
: Box
<[f64]> = Box
::from(slice
);
116 assert_eq
!(&*boxed
, slice
)
121 let slice
: &[i64] = &[i64::MIN
, -2, -1, 0, 1, 2, i64::MAX
];
122 let boxed
: Box
<[i64]> = Box
::from(slice
);
123 assert_eq
!(&*boxed
, slice
)
128 let s
= "Hello, world!";
129 let boxed
: Box
<str> = Box
::from(s
);
130 assert_eq
!(&*boxed
, s
)
134 fn boxed_slice_from_iter() {
136 let boxed
: Box
<[u32]> = iter
.collect();
137 assert_eq
!(boxed
.len(), 100);
138 assert_eq
!(boxed
[7], 7);
142 fn test_array_from_slice() {
143 let v
= vec
![1, 2, 3];
144 let r
: Box
<[u32]> = v
.into_boxed_slice();
146 let a
: Result
<Box
<[u32; 3]>, _
> = r
.clone().try_into();
149 let a
: Result
<Box
<[u32; 2]>, _
> = r
.clone().try_into();