summaryrefslogtreecommitdiffstats
path: root/tests/ui/const-generics/type-dependent/auxiliary/type_dependent_lib.rs
blob: 5dfcbba0e59590ade0da1bb2788affe24e634ad4 (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
pub struct Struct<const N: usize>(());

impl<const N: usize> Struct<N> {
    pub fn new() -> Self {
        Struct(())
    }

    pub fn same_ty<const M: usize>(&self) -> (usize, usize) {
        (N, M)
    }

    pub fn different_ty<const M: u8>(&self) -> (usize, u8) {
        (N, M)
    }

    pub fn containing_ty<T, const M: u8>(&self) -> (usize, u8) {
        (std::mem::size_of::<T>() +  N, M)
    }

    pub fn we_have_to_go_deeper<const M: usize>(&self) -> Struct<M> {
        Struct(())
    }
}

pub trait Foo {
    fn foo<const M: usize>(&self) -> usize;
}

impl Foo for Struct<7> {
    fn foo<const M: usize>(&self) -> usize {
        M
    }
}