pub struct Pack<T> {
    #[init_len = n_packed_arcis_values as T]
    data: [ArcisCiphertext],
    phantom: [T; 0],
}

impl<T: ArcisType> Pack<T> {
    #[arcis_circuit = "pack"]
    fn pack(a: T) -> [ArcisCiphertext; T::n_packed_values()] {}
    pub fn new(a: T) -> Pack<T> {
        let phantom = [a; 0];
        let data = Pack::pack(a);
        Pack { data, phantom }
    }

    #[arcis_circuit = "unpack"]
    pub fn unpack(&self) -> T {
    }
}
