Can't iterate `http::header::ValueDrain` non-destructively
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- backend-api-design
Línea de trabajo
Comienza localizando la implementación y el comportamiento del iterador de http::header::ValueDrain; después, inspecciona cómo se representan la eliminación de HeaderMap y el acceso a HeaderValue. Se considera terminado cuando una ruta de iteración prestada puede exponer los valores eliminados como referencias, admitir iteraciones repetidas y conservar el comportamiento existente del iterador propietario sin requerir una colección.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I need to remove an entry from a HeaderMap and then iterate the removed values non-destructively. The reason for this is I need to mutate the HeaderMap while I'm processing the removed values, but I need to process the removed values as &[u8] or &str. Doing anything else will involve reallocating for every value (I need to trim off the front) and that should be unnecessary for what I'm doing. If HeaderValue exposed its inner Bytes representation then I could use that (as that is cheaply cloneable), but it doesn't, and so I can't.
The simplest solution here would be if http::header::ValueDrain supported iterating references to its values. I know it's already an iterator, but it could have an .iter(&self) method that returns an iterator that borrows the drain (and then &'_ ValueDrain could also implement IntoIterator to return that same borrowed iterator). This way I can work with references to the values, or iterate the values multiple times, without having to collect them into a separate allocation (such as a Vec).
- Lenguaje dominante
- Rust
- Estrellas
- 1.4k
- Forks
- 382
- Merge medio
- 10 h 32 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 hyperium/http
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
-
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Todos los issues de hyperium/http
Issues similares
-
agent/sec-check hive/hive-school-tunaos security
Dificultad 2/5 1-3 horas Aptitud para principiantes 90/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
Sovereign-Labs/sovereign-sdk#3070 ·
-
Accepts Invalid URLAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
area:prove bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Chelis-Lang/chelis#3317 ·
Los mantenedores suelen responder en 1 día
-
[macOS Desktop] New sidebar hover navigation accidentally switches sections while reaching a chatAbiertoapp bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día