pub trait RandomVariable: Clone + Debug + Send + Sync {
type RestoreInfo: Eq;
// Required methods
fn transform_vec(&self) -> (Vec<f64>, Self::RestoreInfo);
fn len(&self) -> usize;
fn restore(
v: &[f64],
info: &Self::RestoreInfo
) -> Result<Self, DistributionError>;
}