fn generate_all_cosets(&self) -> Vec<Vec<Vec<F>>> {
        if !self.has_oracle() {
            return Vec::new();
        }
        let oracle_length = self.oracle_length;
        let localization_parameter = self.localization_parameter;
        let coset_size = 1 << localization_parameter;
        debug_assert_eq!(oracle_length % coset_size, 0);
        let num_cosets = oracle_length / coset_size;
        let stride = num_cosets;
        // axes: [coset index, oracle index, element index in coset]
        // absolute position = coset index + stride * element_index
        (0..num_cosets)
            .map(|coset_index| {
                self.reed_solomon_codes
                    .iter()
                    .map(|(oracle, _)| oracle)
                    .chain(self.message_oracles.iter())
                    .map(|oracle| {
                        (0..coset_size)
                            .map(|element_index| oracle[coset_index + stride * element_index])
                            .collect::<Vec<_>>()
                    })
                    .collect::<Vec<_>>()
            })
            .collect::<Vec<_>>()
    }
/// Generate a un-flattened merkle tree leaves
///
/// result axes:`[coset index, oracle index, element index in coset]`
Generate a un-flattened merkle tree leaves
result axes:`[coset index, oracle index, element index in coset]`
Generate a un - flattened merkle tree leaves result axes : ` [ coset index oracle index element index in coset ] `
fn generate_all_cosets(&self) -> Vec<Vec<Vec<F>>> {
        if !self.has_oracle() {
            return Vec::new();
        }
        let oracle_length = self.oracle_length;
        let localization_parameter = self.localization_parameter;
        let coset_size = 1 << localization_parameter;
        debug_assert_eq!(oracle_length % coset_size, 0);
        let num_cosets = oracle_length / coset_size;
        let stride = num_cosets;
        // axes: [coset index, oracle index, element index in coset]
        // absolute position = coset index + stride * element_index
        (0..num_cosets)
            .map(|coset_index| {
                self.reed_solomon_codes
                    .iter()
                    .map(|(oracle, _)| oracle)
                    .chain(self.message_oracles.iter())
                    .map(|oracle| {
                        (0..coset_size)
                            .map(|element_index| oracle[coset_index + stride * element_index])
                            .collect::<Vec<_>>()
                    })
                    .collect::<Vec<_>>()
            })
            .collect::<Vec<_>>()
    }
fn generate_all_cosets ( & self ) -> Vec < Vec < Vec < F > > > { if ! self . has_oracle ( ) { return Vec :: new ( ) ; } let oracle_length = self . oracle_length ; let localization_parameter = self . localization_parameter ; let coset_size = 1 << localization_parameter ; debug_assert_eq ! ( oracle_length coset_size 0 ) ; let num_cosets = oracle_length / coset_size ; let stride = num_cosets ; // axes: [coset index, oracle index, element index in coset] // absolute position = coset index + stride * element_index ( 0 .. num_cosets ) . map ( | coset_index | { self . reed_solomon_codes . iter ( ) . map ( | ( oracle , _ ) | oracle ) . chain ( self . message_oracles . iter ( ) ) . map ( | oracle | { ( 0 .. coset_size ) . map ( | element_index | oracle [ coset_index + stride * element_index ] ) . collect :: < Vec < _ > > ( ) } ) . collect :: < Vec < _ > > ( ) } ) . collect :: < Vec < _ > > ( ) }
Generate a un-flattened merkle tree leaves
result axes:`[coset index, oracle index, element index in coset]`
Generate a un - flattened merkle tree leaves result axes : ` [ coset index oracle index element index in coset ] `
&self
&self