]>
git.proxmox.com Git - rustc.git/blob - library/core/tests/any.rs
3 #[derive(PartialEq, Debug)]
6 static TEST
: &'
static str = "Test";
10 let (a
, b
, c
) = (&5 as &dyn Any
, &TEST
as &dyn Any
, &Test
as &dyn Any
);
12 assert
!(a
.is
::<i32>());
13 assert
!(!b
.is
::<i32>());
14 assert
!(!c
.is
::<i32>());
16 assert
!(!a
.is
::<&'
static str>());
17 assert
!(b
.is
::<&'
static str>());
18 assert
!(!c
.is
::<&'
static str>());
20 assert
!(!a
.is
::<Test
>());
21 assert
!(!b
.is
::<Test
>());
22 assert
!(c
.is
::<Test
>());
28 (box 5_usize
as Box
<dyn Any
>, box TEST
as Box
<dyn Any
>, box Test
as Box
<dyn Any
>);
30 assert
!(a
.is
::<usize>());
31 assert
!(!b
.is
::<usize>());
32 assert
!(!c
.is
::<usize>());
34 assert
!(!a
.is
::<&'
static str>());
35 assert
!(b
.is
::<&'
static str>());
36 assert
!(!c
.is
::<&'
static str>());
38 assert
!(!a
.is
::<Test
>());
39 assert
!(!b
.is
::<Test
>());
40 assert
!(c
.is
::<Test
>());
44 fn any_downcast_ref() {
45 let a
= &5_usize
as &dyn Any
;
47 match a
.downcast_ref
::<usize>() {
49 x
=> panic
!("Unexpected value {:?}", x
),
52 match a
.downcast_ref
::<Test
>() {
54 x
=> panic
!("Unexpected value {:?}", x
),
59 fn any_downcast_mut() {
61 let mut b
: Box
<_
> = box 7_usize
;
63 let a_r
= &mut a
as &mut dyn Any
;
64 let tmp
: &mut usize = &mut *b
;
65 let b_r
= tmp
as &mut dyn Any
;
67 match a_r
.downcast_mut
::<usize>() {
72 x
=> panic
!("Unexpected value {:?}", x
),
75 match b_r
.downcast_mut
::<usize>() {
80 x
=> panic
!("Unexpected value {:?}", x
),
83 match a_r
.downcast_mut
::<Test
>() {
85 x
=> panic
!("Unexpected value {:?}", x
),
88 match b_r
.downcast_mut
::<Test
>() {
90 x
=> panic
!("Unexpected value {:?}", x
),
93 match a_r
.downcast_mut
::<usize>() {
95 x
=> panic
!("Unexpected value {:?}", x
),
98 match b_r
.downcast_mut
::<usize>() {
100 x
=> panic
!("Unexpected value {:?}", x
),
106 let test
= [0_usize
; 8];
107 let test
= &test
as &dyn Any
;
108 assert
!(test
.is
::<[usize; 8]>());
109 assert
!(!test
.is
::<[usize; 10]>());
114 fn is_any
<T
: Any
+ ?Sized
>() {}