]> git.lizzy.rs Git - rust.git/blob - tests/ui/vtable_address_comparisons.rs
iterate List by value
[rust.git] / tests / ui / vtable_address_comparisons.rs
1 use std::fmt::Debug;
2 use std::ptr;
3 use std::rc::Rc;
4 use std::sync::Arc;
5
6 #[warn(clippy::vtable_address_comparisons)]
7 fn main() {
8     let a: *const dyn Debug = &1 as &dyn Debug;
9     let b: *const dyn Debug = &1 as &dyn Debug;
10
11     // These should fail:
12     let _ = a == b;
13     let _ = a != b;
14     let _ = a < b;
15     let _ = a <= b;
16     let _ = a > b;
17     let _ = a >= b;
18     ptr::eq(a, b);
19
20     let a = &1 as &dyn Debug;
21     let b = &1 as &dyn Debug;
22     ptr::eq(a, b);
23
24     let a: Rc<dyn Debug> = Rc::new(1);
25     Rc::ptr_eq(&a, &a);
26
27     let a: Arc<dyn Debug> = Arc::new(1);
28     Arc::ptr_eq(&a, &a);
29
30     // These should be fine:
31     let a = &1;
32     ptr::eq(a, a);
33
34     let a = Rc::new(1);
35     Rc::ptr_eq(&a, &a);
36
37     let a = Arc::new(1);
38     Arc::ptr_eq(&a, &a);
39
40     let a: &[u8] = b"";
41     ptr::eq(a, a);
42 }