summaryrefslogtreecommitdiffstats
path: root/src/tools/clippy/tests/ui/vec_box_sized.fixed
blob: 0d0f710b558b8570ffefb35ef4127f7fd9eab162 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
//@run-rustfix

#![allow(dead_code)]

struct SizedStruct(i32);
struct UnsizedStruct([i32]);
struct BigStruct([i32; 10000]);

/// The following should trigger the lint
mod should_trigger {
    use super::SizedStruct;
    const C: Vec<i32> = Vec::new();
    static S: Vec<i32> = Vec::new();

    struct StructWithVecBox {
        sized_type: Vec<SizedStruct>,
    }

    struct A(Vec<SizedStruct>);
    struct B(Vec<Vec<u32>>);
}

/// The following should not trigger the lint
mod should_not_trigger {
    use super::{BigStruct, UnsizedStruct};

    struct C(Vec<Box<UnsizedStruct>>);
    struct D(Vec<Box<BigStruct>>);

    struct StructWithVecBoxButItsUnsized {
        unsized_type: Vec<Box<UnsizedStruct>>,
    }

    struct TraitVec<T: ?Sized> {
        // Regression test for #3720. This was causing an ICE.
        inner: Vec<Box<T>>,
    }
}

mod inner_mod {
    mod inner {
        pub struct S;
    }

    mod inner2 {
        use super::inner::S;

        pub fn f() -> Vec<S> {
            vec![]
        }
    }
}

fn main() {}