Support an additional (optional) key in iddqd::IdOrdMap (“BiOrdMap”)
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
Línea de trabajo
Empieza leyendo la API existente de IdOrdMap y su comportamiento actual de indexación. Revisa el diseño propuesto de BiOrdMap y las cuestiones relacionadas con el constructor, el índice y la iteración; después, establece la API prevista y las compensaciones de rendimiento antes de la implementación. Se considera terminado cuando el diseño esté acordado y el comportamiento del nuevo mapa esté cubierto por las pruebas adecuadas.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I love this crate, thank you for all the work!
Quick notice: I’m happy to help drive this feature, but my bandwidth is very limited for the next 6 weeks.
Background
IdOrdMap<K,V> today maintains exactly one sorted key. I need one primary index (sorted) and a secondary key for fast lookup, without being forced to rebuild maps or sort on the fly.
I began this on Reddit but it’s complex enough to merit an in-repo API discussion.
Options
- Only primary sorted + secondary lookup
• Simple, but if you later need to sort by the second key, you’re back to ad-hoc sorting or a separate map. - Two always-sorted keys
• Two B-trees under the hood; higher memory & insertion/removal cost. - Primary sorted + optional sorted
• Zero-cost if you don’t invoke the second sort.
• API is trickier: needs either builders/constructors or trait-gated impls.
API Questions
• Should one hard-code a .with_secondary_index() constructor, or infer “sortable” from K: Ord + Clone?
• Does one expose separate .iter_by_primary()/.iter_by_secondary() methods, or a unified .iter(Index)?
• Is it better to have separate BiOrdMap vs. a single generic type with optional indices?
Initial Proposal
Introduce a BiOrdMap<K1, K2, V> that always provides:
• Primary sorted index on K1
• Secondary unsorted lookup by K2
This stays close to the existing API, provides a playground to refine constructors, method names, and performance trade-offs, and lays groundwork for an optional‐sort variant later.
Feedback and real-world use cases welcome!
- Lenguaje dominante
- Rust
- Estrellas
- 411
- Forks
- 16
- Merge medio
- 21 min
- PR fusionados (30 d)
- 2
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de oxidecomputer/iddqd
-
add `facet` supportAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
oxidecomputer/iddqd#249 ·
-
Implement the `retain` methodAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
oxidecomputer/iddqd#185 · 1 comentario ·
-
Dependency DashboardAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 15/100
oxidecomputer/iddqd#44 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
oxidecomputer/iddqd#41 · 2 comentarios ·
-
Keep insertion-order?Abiertohelp-wanted
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
oxidecomputer/iddqd#33 · 2 comentarios · 1 reacción ·
Todos los issues de oxidecomputer/iddqd
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
plrigaux/sysd-manager#85 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
dsx-ai-factory/infra-controller#8341 ·
Los mantenedores suelen responder en 1 día
-
enhancement triage:deciding
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
open-telemetry/otel-arrow#4540 ·
Los mantenedores suelen responder en 2 días
-
benchmark: CSV report files contain blank records on WindowsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertocomponent:benchmark
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
agentic-os-org/ANOLISA#9177 ·
Los mantenedores suelen responder en 1 día
-
area/mcp area/modeling effort/s impact/few priority/p3 severity/low triaged type/bug urgency/this-quarter
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
cristim/AztecCraft#336 ·
Los mantenedores suelen responder en 1 día