arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/src/poly.rs
src/poly.rsRaw
 1pub mod poly;
 2
 3#[derive(Clone, Debug, PartialEq, Eq)]
 4pub struct Poly<O>(pub Vec<O>);
 5
 6impl<O> Poly<O>where
 7    O: Default + Clone,
 8    {
 9    pub fn new(n: usize) -> Self{
10        Self(vec![O::default();n])
11    }
12
13    pub fn new_montgomery(n: usize) -> Self{
14        Self(vec![O::default();n])
15    }
16
17    pub fn buffer_size(&self) -> usize{
18        return self.0.len()
19    }
20
21    pub fn from_buffer(&mut self, n: usize, buf: &mut [O]){
22        assert!(buf.len() >= n, "invalid buffer: buf.len()={} < n={}", buf.len(), n);
23        self.0 = Vec::from(&buf[..n]);
24    }
25
26    pub fn n(&self) -> usize{
27        return self.0.len()
28    }
29}