]>
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
;
9 use core
::result
::Result
::{Err, Ok}
;
14 fn test_owned_clone() {
16 let b
: Box
<i32> = a
.clone();
20 #[derive(PartialEq, Eq)]
25 let a
= Box
::new(8) as Box
<dyn Any
>;
26 let b
= Box
::new(Test
) as Box
<dyn Any
>;
28 match a
.downcast
::<i32>() {
30 assert
!(a
== Box
::new(8));
34 match b
.downcast
::<Test
>() {
36 assert
!(a
== Box
::new(Test
));
41 let a
= Box
::new(8) as Box
<dyn Any
>;
42 let b
= Box
::new(Test
) as Box
<dyn Any
>;
44 assert
!(a
.downcast
::<Box
<Test
>>().is_err());
45 assert
!(b
.downcast
::<Box
<i32>>().is_err());
50 let a
= Box
::new(8) as Box
<dyn Any
>;
51 let b
= Box
::new(Test
) as Box
<dyn Any
>;
52 let a_str
= format
!("{:?}", a
);
53 let b_str
= format
!("{:?}", b
);
54 assert_eq
!(a_str
, "Any");
55 assert_eq
!(b_str
, "Any");
57 static EIGHT
: usize = 8;
58 static TEST
: Test
= Test
;
59 let a
= &EIGHT
as &dyn Any
;
60 let b
= &TEST
as &dyn Any
;
61 let s
= format
!("{:?}", a
);
63 let s
= format
!("{:?}", b
);
69 fn homura
<T
: Deref
<Target
= i32>>(_
: T
) {}
70 homura(Box
::new(765));
76 let p
= Box
::into_raw(x
);
80 let y
= Box
::from_raw(p
);
89 fn set(&mut self, value
: u32);
95 fn get(&self) -> u32 {
99 fn set(&mut self, value
: u32) {
104 let x
: Box
<dyn Foo
> = Box
::new(Bar(17));
105 let p
= Box
::into_raw(x
);
107 assert_eq
!(17, (*p
).get());
109 let y
: Box
<dyn Foo
> = Box
::from_raw(p
);
110 assert_eq
!(19, y
.get());
116 let slice
: &[f64] = &[-1.0, 0.0, 1.0, f64::INFINITY
];
117 let boxed
: Box
<[f64]> = Box
::from(slice
);
118 assert_eq
!(&*boxed
, slice
)
123 let slice
: &[i64] = &[i64::MIN
, -2, -1, 0, 1, 2, i64::MAX
];
124 let boxed
: Box
<[i64]> = Box
::from(slice
);
125 assert_eq
!(&*boxed
, slice
)
130 let s
= "Hello, world!";
131 let boxed
: Box
<str> = Box
::from(s
);
132 assert_eq
!(&*boxed
, s
)
136 fn boxed_slice_from_iter() {
138 let boxed
: Box
<[u32]> = iter
.collect();
139 assert_eq
!(boxed
.len(), 100);
140 assert_eq
!(boxed
[7], 7);
144 fn test_array_from_slice() {
145 let v
= vec
![1, 2, 3];
146 let r
: Box
<[u32]> = v
.into_boxed_slice();
148 let a
: Result
<Box
<[u32; 3]>, _
> = r
.clone().try_into();
151 let a
: Result
<Box
<[u32; 2]>, _
> = r
.clone().try_into();