pub(crate) fn generate<T>(
    inner_len: usize, 
    outer_len: usize, 
    dist: DataDistribution, 
    selectivity: Option<u32>
) -> Result<(Vec<T>, Vec<T>), Box<dyn Error>> where
    T: Copy + Default + Send + KeyAttribute + FromPrimitive + SampleUniform,