Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Reserver does not need to be generic

Aberta Para iniciantes
#195 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 2 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
72/100
Tipo de issue
Refatoração
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
rust
Domínio
backend

Direção de pesquisa

Comece pela struct Reserver e por seus blocos impl Debug e inerentes, citados na issue, e depois encontre onde Reserver<ChunkId, ChunkId> é construído e usado. Remova os parâmetros de tipo para que os campos reservations e pending_removals usem ChunkId diretamente, e atualize os blocos impl e os pontos de chamada de acordo. Está pronto quando o crate compila com cargo check e os testes existentes passam com cargo test.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

The Reserver<K,V> currently has two type parameters, but is only ever created as Reserver<ChunkId, ChunkId>. Removing the type parameters and making the Reserver non-generic will make it more simple.

The current generic code:

pub struct Reserver<K, V> {
    reservations: Cache<K, (V, UnboundedSender<V>, Instant), FxBuildHasher>,
    pending_removals: Arc<Mutex<DelayQueue<K>>>,
}

impl<K, V> core::fmt::Debug for Reserver<K, V>
where
    K: Hash + Eq + Send + Sync + Debug + Copy + 'static,
    V: Send + Sync + Clone + Debug + 'static,
{
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("Reserver")
            .field("reservations", &self.reservations)
            .field("&pending_removals", &self.pending_removals)
            .finish()
    }
}

impl<K, V> Reserver<K, V>
where
    K: Hash + Eq + Send + Sync + Debug + Copy + 'static,
    V: Send + Sync + Clone + 'static,
Linguagem predominante
Rust
Estrelas
96
Forks
2
Merge médio
8d 22h
PRs com merge (30d)
2

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de channable/opsqueue

Todas as issues de channable/opsqueue

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.