Skip to content

Commit

Permalink
Improving section 3 text
Browse files Browse the repository at this point in the history
  • Loading branch information
viniblack committed Jul 23, 2024
1 parent 1043c9a commit 3ca4323
Show file tree
Hide file tree
Showing 7 changed files with 168 additions and 158 deletions.
28 changes: 14 additions & 14 deletions Rust_State_Machine/pt-BR/Section_3/Lesson_1_Generic_Types.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,40 +44,40 @@ No `balances.rs`:
use std::collections::BTreeMap;

/*
TODO: Defina os tipos comuns usados ​​nesta palete:
- `ID da conta`
- `Equilíbrio`
TODO: Defina os tipos comuns usados ​​nesta pallet:
- `AccountId`
- `Balance`
Em seguida, atualize esta paleta para usar esses tipos comuns.
*/

/// Este é o Módulo de Saldos.
/// É um módulo simples que monitora quanto saldo cada conta tem neste máquina de estado.
/// É um módulo simples que monitora quanto saldo cada conta tem nesta máquina de estado.
#[derive(Debug)]
pub struct Pallet {
// Um ​​mapeamento simples de armazenamento de contas (`String`) para seus saldos (`u128`).
balances: BTreeMap<String, u128>,
// Um mapeamento simples de armazenamento de contas (`String`) para seus saldos (`u128`).
balances: BTreeMap<String, u128>,
}
```
No `system.rs`:
```rust
use std::collections::BTreeMap;

/*
TODO: Defina os tipos comuns usados ​​nesta palete:
- `AccountID`
- `BlockNumber`
- `Nonce`
TODO: Defina os tipos comuns usados ​​nesta pallet:
- `AccountId`
- `BlockNumber`
- `Nonce`
Em seguida, atualize esta paleta para usar esses tipos comuns.
Em seguida, atualize esta paleta para usar esses tipos comuns.
*/

/// Este é o Palete do Sistema.
/// Este é o Pallet do Sistema.
/// Ele lida com o estado de baixo nível necessário para seu blockchain.
#[derive(Debug)]
pub struct Pallet {
/// O número do bloco atual.
block_number: u32,
/// O número do bloco atual.
block_number: u32,
/// Um ​​mapa de uma conta para seu nonce.
nonce: BTreeMap<String, u32>,
}
Expand Down
10 changes: 5 additions & 5 deletions Rust_State_Machine/pt-BR/Section_3/Lesson_2_Num_Crate.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,20 @@ Você pode encontrar a [solução para a etapa anterior aqui](https://gist.githu

Rust é projetado para ser muito leve e fornece muito pouco pronto para uso.

Dentro do ecossistema, muitas funções e recursos que você poderia esperar ser incluídos no Rust `std` ou `core` são na verdade delegados para pequenos crates bem conhecidos e amplamente utilizados.
Dentro do ecossistema, muitas funções e recursos que você poderia esperar ser incluídos no Rust `std` ou `core` são na verdade delegados para pequenos crates bem conhecidos e amplamente utilizados.

Para nosso próximo passo, queremos acessar traits para operações numéricas básicas como:

- `CheckedAdd` - Um tipo que suporta `checked_add`
- `CheckedSub` - Um tipo que suporta `checked_sub`
- `CheckedAdd` - Um tipo que suporta `checked_add`
- `CheckedSub` - Um tipo que suporta `checked_sub`
- `Zero` - Um tipo que pode retornar o valor zero ao chamar `zero()`
- `One` - Um tipo que pode retornar o valor um ao chamar `one()`
- `One` - Um tipo que pode retornar o valor um ao chamar `one()`

Para acessar essas traits, precisaremos importar um novo crate em nosso projeto.

## Cargo.toml

Quando inicializamos nosso projeto, um arquivo `Cargo.toml` foi gerado para nós.
Quando inicializamos nosso projeto, um arquivo `Cargo.toml` foi gerado para nós.

Como mencionado antes, é muito semelhante a um arquivo `package.json` que você esperaria encontrar em um projeto Node.js.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,15 @@ Se quisermos tornar nosso `Pallet` genérico, ele pareceria algo assim:

```rust
pub struct Pallet<AccountId, Balance> {
balances: BTreeMap<AccountId, Balance>,
balances: BTreeMap<AccountId, Balance>,
}
```

E implementar funções em `Pallet` pareceria assim:

```rust
impl<AccountId, Balance> Pallet<AccountId, Balance> {
// funções que usam esses tipos
// funções que usam esses tipos
}
```

Expand All @@ -59,10 +59,10 @@ Isso parecerá assim:
```rust
impl<AccountId, Balance> Pallet<AccountId, Balance>
where
AccountId: Ord,
Balance: Zero + CheckedSub + CheckedAdd + Copy,
AccountId: Ord,
Balance: Zero + CheckedSub + CheckedAdd + Copy,
{
// functions which use these types and have access to the traits specified
// functions which use these types and have access to the traits specified
}
```

Expand Down Expand Up @@ -109,13 +109,11 @@ No `balances.rs`:
```rust
/* TODO: Você pode precisar importar algumas coisas para este passo. */
use std::collections::BTreeMap;
use num::traits::{CheckedAdd, CheckedSub, Zero};

type AccountId = String;
type Balance = u128;

/*
TODO:
Atualize a struct `Pallet` para ser genérica em relação aos tipos `AccountId` e `Balance`.
/*
TODO:
Atualize a struct `Pallet` para ser genérica em relação aos tipos `AccountId` e `Balance`.
Você não precisará das definições de tipo abaixo depois de concluir.
Os tipos agora serão definidos em `main.rs`. Veja os TODOs lá.
Expand All @@ -126,14 +124,14 @@ type Balance = u128;
#[derive(Debug)]
pub struct Pallet {
// Um armazenamento simples mapeando contas para seus saldos.
balances: BTreeMap<AccountId, Balance>,
balances: BTreeMap<AccountId, Balance>,
}

/*
TODO:
Os tipos genéricos precisam satisfazer certas características para serem usados ​​nas funções abaixo.
- ID da conta: pedido
- Saldo: Zero + CheckedSub + CheckedAdd + Copiar
- AccountId: Ord
- Balance: Zero + CheckedSub + CheckedAdd + Copy
Você pode descobrir essas características deixando o compilador dizer o que está faltando.
Expand All @@ -144,31 +142,34 @@ pub struct Pallet {

#[cfg(test)]
mod tests {
#[test]
fn init_balances() {
use super::*;

#[test]
fn init_balances() {
/*
TODO:
Ao criar uma instância de `Pallet`, você deve definir explicitamente os tipos que usa.
*/
let mut balances = super::Pallet::new();
let mut balances = super::Pallet::new();

/// ...código anterior.
}
/// ...código anterior.
}

#[test]
fn transfer_balance() {
/*
#[test]
fn transfer_balance() {
/*
TODO:
Ao criar uma instância de `Pallet`, você deve definir explicitamente os tipos que usa.
*/
let mut balances = super::Pallet::new();

/// ...código anterior.
}
/// ...código anterior.
}
}
```

No `main.rs`:

```rust
mod balances;
mod system;
Expand All @@ -177,20 +178,20 @@ mod system;
// Os módulos são configurados diretamente para esses tipos e satisfazem todos os nossos
// requisitos de característica.
mod types {
/*
/*
TODO: Mova suas definições de tipo para `AccountId` e `Balance` aqui.
*/
}

// Este é o nosso Runtime principal.
// Acumula todos os diferentes paletes que queremos utilizar.
// Acumula todos os diferentes pallets que queremos utilizar.
#[derive(Debug)]
pub struct Runtime {
system: system::Pallet,
/* TODO: Use suas definições de tipo para seus novos `balances::Pallet` genéricos. */
balances: balances::Pallet,
system: system::Pallet,
/* TODO: Use suas definições de tipo para seus novos `balances::Pallet` genéricos. */
balances: balances::Pallet,
}
```

Tornar o Balances Pallet genérico é uma habilidade crucial para a criação de soluções blockchain flexíveis e escaláveis. Ótimo trabalho ao concluir esta lição! 🌟
Poste uma captura de tela em [#progress](https://discord.com/channels/898706705779687435/980906289968345128) mostrando seu tempo de execução com o novo Balances Pallet genérico em ação. É melhor ainda não estar usando &'static str!
Poste uma captura de tela em [#progress](https://discord.com/channels/898706705779687435/980906289968345128) mostrando seu runtime com o novo Balances Pallet genérico em ação. É melhor ainda não estar usando `&'static str`!
Original file line number Diff line number Diff line change
Expand Up @@ -32,18 +32,18 @@ mod system;
// Módulos são configurados diretamente para esses tipos e eles satisfazem todos os nossos
// requisitos de traits.
mod types {
pub type AccountId = String;
pub type Balance = u128;
/* TODO: Mova suas definições de tipo para `BlockNumber` e `Nonce` aqui. */
pub type AccountId = String;
pub type Balance = u128;
/* TODO: Mova suas definições de tipo para `BlockNumber` e `Nonce` aqui. */
}

// Este é o nosso Runtime principal.
// Acumula todos os diferentes paletes que queremos utilizar.
// Acumula todos os diferentes pallets que queremos utilizar.
#[derive(Debug)]
pub struct Runtime {
/* TODO: Use suas definições de tipo para seu novo `system::Pallet` genérico */
system: system::Pallet,
balances: balances::Pallet<types::AccountId, types::Balance>,
/* TODO: Use suas definições de tipo para seu novo `system::Pallet` genérico */
system: system::Pallet,
balances: balances::Pallet<types::AccountId, types::Balance>,
}
```

Expand All @@ -57,43 +57,46 @@ type BlockNumber = u32;
type Nonce = u32;

/*
TODO:
Atualize a estrutura `Pallet` para ser genérica sobre os tipos `AccountId`, `BlockNumber` e `Nonce`.
Você não precisará das definições de tipo acima depois de terminar.
Os tipos agora serão definidos em `main.rs`. Veja os TODOs lá.
TODO:
Atualize a estrutura `Pallet` para ser genérica sobre os tipos `AccountId`, `BlockNumber` e `Nonce`.
Você não precisará das definições de tipo acima depois de terminar.
Os tipos agora serão definidos em `main.rs`. Veja os TODOs lá.
*/

/// Este é o Palete do Sistema.
/// Este é o Pallet do Sistema.
/// Ele lida com o estado de baixo nível necessário para seu blockchain.
#[derive(Debug)]
pub struct Pallet {
/// O número do bloco atual.
block_number: BlockNumber,
/// Um ​​mapa de uma conta para seu nonce.
nonce: BTreeMap<AccountId, Nonce>,
/// O número do bloco atual.
block_number: BlockNumber,
/// Um ​​mapa de uma conta para seu nonce.
nonce: BTreeMap<AccountId, Nonce>,
}

/*
TODO:
Os tipos genéricos precisam satisfazer certas características para serem usados ​​nas funções abaixo.
Veja se você consegue descobri-los sozinho.
TODO:
Os tipos genéricos precisam satisfazer certas características para serem usados ​​nas funções abaixo.
Veja se você consegue descobri-los sozinho.
NOTA: Pode ser necessário ajustar algumas das funções abaixo para satisfazer o verificador de empréstimo.
NOTA: Pode ser necessário ajustar algumas das funções abaixo para satisfazer o verificador de empréstimo.
*/

/// ...código anterior.

#[cfg(test)]
mod test {
#[test]
fn init_system() {
/*
#[test]
fn init_system() {
/*
TODO:
Ao criar uma instância de `Pallet`, você deve definir explicitamente os tipos que usa.
*/
let mut system = super::Pallet::new();
let mut system = super::Pallet::<String, u32, u32>::new();

/// ...código anterior.
}
}
}
```
```

Tornar o Pallet de Sistema genérico é uma habilidade crucial para a criação de soluções blockchain flexíveis e escaláveis. Ótimo trabalho ao concluir esta lição! 🌟
Poste uma captura de tela em [#progress](https://discord.com/channels/898706705779687435/980906289968345128) mostrando seu runtime com o novo Sistema Pallet genérico em ação.
Loading

0 comments on commit 3ca4323

Please sign in to comment.