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
#[derive(Copy, Clone)]
pub struct SeparableKernel<const SIZE: usize> {
    values: [f32; SIZE]
}

impl<const SIZE: usize> SeparableKernel<SIZE> {
    pub fn new(values: [f32; SIZE]) -> Self {
        Self {
            values
        }    
    }
    
    pub fn values(&self) -> [f32; SIZE] {
        self.values
    }
}

#[derive(Copy, Clone)]
pub struct NonSeparableKernel<const SIZE: usize> {
    values: [[f32; SIZE]; SIZE]
}

impl<const SIZE: usize> NonSeparableKernel<SIZE> {
    pub fn new(values:  [[f32; SIZE]; SIZE]) -> Self {
        Self {
            values
        }
    }

    pub fn values(&self) ->  [[f32; SIZE]; SIZE] {
        self.values
    }
}