← Back to list

Como construir uma task-list no Rust: um tutorial passo a passo — parte 2

Na primeira parte desse tutorial, nós aprendemos a instalar e configurar o ambiente para desenvolver programas em Rust e desenvolvemos os…

Franklyn Sancho · 2023-05-30 14:17 · 0 claps · 5.3 min read
#rust #programação #software #task-list #desenvolvimento-software
Open on Medium ↗

Como construir uma task-list no Rust: um tutorial passo a passo — parte 2

Na primeira parte desse tutorial, nós aprendemos a instalar e configurar o ambiente para desenvolver programas em Rust e desenvolvemos os recursos de adição, listagem e remoção de tasks da nossa task-list. Nessa segunda parte nós vamos adicionar horários, prioridades, retorno de tabelas e cores para tornar o nosso programa mais intuitivo.

Antes de começarmos…

Antes de darmos início a essa jornada, é de suma importância que você tenha lido a parte 1 desse tutorial. Caso não tenha lido, deixarei o link abaixo:

[embed]Como construir uma task-list no Rust: um tutorial passo a passo — parte 1 Nesse tutorial, nós vamos construir uma task-list no Rust, uma linguagem de programação moderna e segura. Este é o…franklyn-sanc.medium.com

Instalando dependências

Para instalar dependências no Rust é muito simples, basta visitar esse site, buscar as dependências necessárias e seguir os passos de instalação. Há duas formas de instalar: adicionando a dependência no arquivo cargo.toml e rodando o comando cargo build ou diretamente pela CLI.

[embed]crates.io: Rust Package Registry Edit descriptioncrates.io

Para esse tutorial, nós vamos precisar de três dependências:

  • prettytable-rs: nos permite adicionar tabelas as nossas aplicações
  • colored: nos permitir adicionar cores as mensagens de saída
  • chrono: recurso de horário e data.

Para instalar é muito simples, basta deixar o seu arquivo cargo.toml dessa maneira e rodar o comando cargo build na raiz do seu projeto:

Reestruturando o código

Para importar as dependências instaladas, basta ir até o arquivo main.rs e adicionar a seguinte estrutura no topo do código:

Enum Priority e Struct TodoList

O enum, diferente de uma struct, não tem tipo, apenas campos. Para o propósito do nosso projeto, ele serve par limitar as entradas de usuário no campo de prioridades. Vejamos abaixo como vai ficar o nosso enum:

Os usuários só poderão adicionar esses valores no campo de prioridades: **Baixa, Média e Alta, **criando um controle de validação muito eficiente.

Também precisamos modificar a struct TodoList para receber o horário e os valores de prioridades. Vejamos abaixo como vai ficar a nossa struct reestruturada:

Pronto! agora nossas tasks aceitam mais dois campos: horário e prioridades.

Novo método add_tasks

Como modificamos a nossa struct, também será necessário refatorar todos os nossos métodos do impl. O primeiro será o responsável por adicionar novas tasks:

Não tiveram tantas modificações significativas nesse método, apenas os novos parâmetros e a mensagem de sucesso.

Método read_task

Será neste método onde vamos construir o recurso para editar as tasks. Finalmente teremos um CRUDCreate, Read, Update e Delete (Criação, Leitura, Edição/Atualização e Remoção). É importante mencionar também que o método read_task será parte do add_task. Este método será um pouco mais longo que os outros.

Esta estrutura recebe o valor da tarefa e a guarda no parâmetro task

Esta recebe o valor do horário e guarda no parâmetro time

Esta estrutura guarda o valor da prioridade e ele precisa estar na Enum que criamos no inicio

Método list_task

Este método tem como responsabilidade retornar e listar as tasks já salvas. Ele também precisa ser refatorado e para melhorar o retorno, vamos adicionar tabelas e cores. Então se preparem para usar as duas outras dependências que adicionamos no inicio desse tutorial.

Método remove_task

Este método será responsável por remover as tasks da lista, se eu não me engano, esta exatamente como da primeira:

Lembrando que todas esses métodos estão dentro do impl TodoList

Função Main

Agora nós vamos começar a refatorar a função principal do nosso programa para adaptá-la as mudanças do impl.

Na estrutura acima nós instanciamos os objetos necessários e damos inicio a construção do nosso loop com o menu da aplicação. Veja como vai ficar o seu menu principal depois dessas mudanças.

Obs. Pode ser que o seu código não funcione ainda, pois precisamos refatorar o operador match. Caso ocorra algum erro, não se preocupe, este é apenas um exemplo visual

Percebam que, além do título, as linhas não estão com separados, exatamente como essa estrutura está determinando:

table.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE);

Operador Match

Como já mencionamos no tutorial anterior, o operador match verifica o valor de entrada do usuário e executa a estrutura predeterminada.

Esta estrutura é responsável por executar o add_list

Essa estrutura é responsável por listar as tarefas caso o usuário entre com o valor 2 e editar a task selecionada caso o usuário entre com o valor 3. Com essa estrutura nós finalmente completamos o CRUD da nossa aplicação task-list. Agora só falta adicionar o remove_task no valor 4 e pronto, teremos as quatro operações básicas:

Pronto, nosso código está completo e já podemos adicionar as nossas tarefas com o horário que desejamos e a prioridade.

Aplicação completa e execução

Apenas para que não haja duvidas, vou disponibilizar a estrutura do código completo para comparações:

importações, enum e struct

Impl TodoList

Função main

Lindo, né? Para executar o programa task-list, basta rodar o comando cargo run na raiz do projeto. Vejamos o código em execução:

Adicionando uma tarefa

vamos ver um exemplo de como adicionar uma tarefa na nossa aplicação e o retorno que teremos:

Listando as tarefas

agora vamos ver como vai ficar a tarefa listada na nossa aplicação e o retorno:

CONCLUSÃO

Agora nós temos uma aplicação completa, mas ainda temos algumas coisas para fazer como: melhorar a estrutura do código, dividir ele para ficar mais organizado, consertar os bugs, adicionar mais recursos e etc, o que ficará para os próximos tutoriais.

Até a próxima.


메타데이터
post_id
b1efc462d3a9
slug
como-construir-uma-task-list-no-rust-um-tutorial-passo-a-passo-parte-2-b1efc462d3a9
url
https://medium.com/@franklyn-sanc/como-construir-uma-task-list-no-rust-um-tutorial-passo-a-passo-parte-2-b1efc462d3a9
canonical_url
https://medium.com/@franklyn-sanc/como-construir-uma-task-list-no-rust-um-tutorial-passo-a-passo-parte-2-b1efc462d3a9
author_url
https://medium.com/@franklyn-sanc
status
ok
fetched_at
2026-08-10 12:01:12