use crate::{ layouts::{VecZnx, VecZnxToMut, VecZnxToRef, ZnxInfos, ZnxView, ZnxViewMut}, reference::znx::{ZnxCopy, ZnxZero}, }; pub fn vec_znx_copy(res: &mut R, res_col: usize, a: &A, a_col: usize) where R: VecZnxToMut, A: VecZnxToRef, ZNXARI: ZnxCopy + ZnxZero, { let mut res: VecZnx<&mut [u8]> = res.to_mut(); let a: VecZnx<&[u8]> = a.to_ref(); #[cfg(debug_assertions)] { assert_eq!(res.n(), a.n()) } let res_size = res.size(); let a_size = a.size(); let min_size = res_size.min(a_size); for j in 0..min_size { ZNXARI::znx_copy(res.at_mut(res_col, j), a.at(a_col, j)); } for j in min_size..res_size { ZNXARI::znx_zero(res.at_mut(res_col, j)); } }