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
struct
está servindo como uma interface. Mesmo assim, oPallet
ainda não está sendo utilizado, tanto que recebemos o warning por isso. Então, podemos implementar a interfacePallet
para 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.