Analisando propostas

Rust Lang - Corrigir falha de atribuição de dados do Rust

Publicado em 24 de Julho de 2025 dias na TI e Programação

Sobre este projeto

Aberto

🔧 Projeto de Depuração Rust: Dados de futures_ask Atribuídos Incorretamente
📌 Visão Geral
Este projeto visa identificar e corrigir um bug crítico em uma aplicação Rust que processa dados de mercado em tempo real da corretora Gate.io via WebSocket. O problema envolve dados destinados a um campo (futures_ask) sendo salvos incorretamente em outro campo — causando inconsistências no comportamento da aplicação.

📈 Contexto
A aplicação consome atualizações do livro de ordens em tempo real usando a API WebSocket da Gate.

Internamente, os dados analisados são mapeados em structs Rust para processamento posterior.

No entanto, os dados de futures_ask parecem estar atribuídos ou armazenados no campo errado, sugerindo um possível bug na lógica de desserialização ou mapeamento.

🎯 Objetivo
O objetivo é depurar e rastrear o fluxo de dados de entrada do WebSocket:

Entender como e onde futures_ask está sendo definido.

Identificar por que o valor acaba no campo de struct errado.

Proponha e implemente uma correção.

🧠 Requisitos
Sólida experiência em Rust.

Familiaridade com código assíncrono, serde e análise de dados.

Experiência com WebSockets é um diferencial, mas experiência prévia com Gate.io não é necessária.

🧪 Tarefas Envolvidas
Analisar as estruturas de dados relevantes (structs) e seus mapeamentos.

Revisar a lógica de desserialização (serde, análise manual, etc.).

Investigar como os dados recebidos são roteados e armazenados.

Criar exemplos mínimos reproduzíveis, se necessário.

Sugerir e implementar uma correção.

📂 Ferramentas e Tecnologia
Rust (ecossistema assíncrono: tokio, futures, etc.)

Serde_json

Cliente WebSocket (provavelmente tokio-tungstenite ou similar)

log/tracing para diagnóstico

Contexto Geral do Projeto

No meu projeto, o campo future_bid está armazenando um valor que veio do array "a" do JSON enviado via WebSocket da exchange Gate.io. Este array "a" representa as ordens de venda (stakes). No entanto, isso está incorreto. O campo future_bid deve conter o melhor lance (ordem de compra) e, no meu código, uso a seguinte linha para isso: future_bid = get_price(&book.bids, &Reverse(zero)).0; Em outras palavras, estou passando book.bids para a função get_price, e isso deveria obter o melhor lance, não o melhor preço de venda. O problema é: mesmo assim, o valor que aparece em future_bid é um valor que está presente apenas nos preços de venda (campo "a" do JSON), e não nos preços de venda (campo "b"). Você pode investigar por que isso está acontecendo? A lógica esperada é que future_bid sempre aceita o melhor lance, não o preço de venda.

Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho especificações
Disponibilidade requerida Conforme necessário
Funções necessárias Desenvolvedor

Prazo de Entrega: Não estabelecido

Habilidades necessárias

Outro projetos publicados por L. P. S. R.