es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función `parity_scale_codec::Encode` no está implementada para `std::collections::BTreeMap`.

Aquí está mi estructura:

#[derive(PartialEq, Eq, PartialOrd, Ord, Default, Clone, Encode, Decode, TypeInfo)]
#[cfg_attr(feature = "std", derive(Debug))]
pub struct SortitionSumTree<accountid> {
    pub k: u128,
    pub stack: Vec<u128>,
    pub nodes: Vec<u128>,
    pub ids_to_tree_indexes: BTreeMap<accountid, u128="">,
    pub node_indexes_to_ids: BTreeMap<u128, accountid="">,
}

Mi almacenamiento:

#[pallet::storage]
#[pallet::getter(fn sortition_sum_trees)]
pub type SortitionSumTrees<t> = StorageMap<_, Blake2_128Concat, Vec<u8>, SortitionSumTree<t>>;

Pero está dando un error:

the trait `parity_scale_codec::Encode` is not implemented for `std::collections::BTreeMap<u128, t="">`</u128,></u128,></accountid,>

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que el contenedor BTreeMap utilizado en la estructura no implementa el rasgo Encode de la biblioteca parity-scale-codec.

    Para solucionar este error, el contenedor BTreeMap debe implementar explícitamente el rasgo Encode agregando el atributo #[derive(Encode)] a la definición de la estructura.

    Aquí hay una versión actualizada de la estructura con el rasgo Encode implementado para BTreeMap:

    #[derive(PartialEq, Eq, PartialOrd, Ord, Default, Clone, Encode, Decode, TypeInfo)]
    #[cfg_attr(feature = "std", derive(Debug))]
    pub struct SortitionSumTree<accountid> {
        pub k: u128,
        pub stack: Vec<u128>,
        pub nodes: Vec<u128>,
        #[codec(compact)]
        pub ids_to_tree_indexes: BTreeMap<accountid, u128="">,
        #[codec(compact)]
        pub node_indexes_to_ids: BTreeMap<u128, accountid="">,
    }
    

    Tenga en cuenta que agregamos el atributo #[codec(compact)] a los contenedores BTreeMap para asegurarnos de que se codifiquen en un formato compacto más eficiente.

    Después de realizar este cambio, el mapa de almacenamiento SortitionSumTrees debería compilar sin errores.</u128,></accountid,>

Comments are closed.