Implementação da Estrutura de Dados BTreeMap
Na aula anterior, entendemos o uso dos pallets e criamos uma struct para representar o Balances Pallet. Nesta aula,
iremos implementar a estrutura de dados BTreeMap para armazenar os saldos das contas.
Primeiro, importamos a estrutura de dados BTreeMap da biblioteca padrão do Rust.
(Algo que pessoalmente eu gostei muito de existir por padrão no Rust é a documentação da linguagem, que é muito bem feita e detalhada, e pode ser acessada aqui (opens in a new tab))
// balances.rs
use std::collections::BTreeMap;O BTreeMap é uma estrutura de dados que armazena pares de chave-valor em ordem. A chave é armazenada em uma árvore B, que é uma estrutura de dados de árvore balanceada. Isso significa que a árvore é dividida em nós que contêm chaves e valores, e cada nó tem um número limitado de filhos. A árvore é balanceada para garantir que a profundidade da árvore seja mantida em um nível razoável.
Após importarmos o BTreeMap, podemos adicionar um campo de saldo à nossa struct Pallet.
pub struct Pallet {
balances: BTreeMap<String, u128>,
}Neste trecho de código, criamos um campo balances do tipo BTreeMap<String, u128>. Isso significa que o saldo de cada
conta será armazenado como um par de chave-valor, onde a chave é uma String que representa o endereço da conta e o
valor é um u128 que representa o saldo da conta.
Neste caso, a
structestá servindo como uma interface. Mesmo assim, oPalletainda não está sendo utilizado, tanto que recebemos o warning por isso. Então, podemos implementar a interfacePalletpara que o warning seja removido.
impl Pallet {
pub fn new() -> Self {
Self {
balances: BTreeMap::new(),
}
}
}Você pode confirmar neste ponto que tudo ainda deve estar compilando, e que você não cometeu nenhum erro pequeno. Em seguida, vamos realmente começar a usar este módulo.