`slice-dst`: Provide example for custom 'slices' using `SliceWithHeader`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Documentación
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- rust
- Área
- documentation
Línea de trabajo
Comienza con el tipo SliceWithHeader y el ejemplo personalizado de MyString/MyStr del issue; no se identifica ningún archivo ni prueba. Establece los requisitos de seguridad para la conversión de referencia propuesta y documenta después un ejemplo completo de un slice personalizado y su comportamiento esperado de Borrow/ToOwned.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Thank you for this awesome crate. I always respect when people dive into the unsafe world of Rust.
I'd like to use the slice-dst crate to build something similar to String and str. Let's assume:
struct MyString(Box<SliceWithHeader<Info, u8>>);
To mimicry str I want to implement Borrow<MyStr> for MyString and ToOwned for MyStr (type Owned = MyString). However, I have a problem defining MyStr. I could use a type alias:
type MyStr = SliceWithHeader<Info, u8>;
But this is inconvenient and won't allow some custom impl MyStr. What I would like is to use is a new-type-pattern. But this makes it difficult implementing Borrow:
struct MyStr(SliceWithHeader<Info, u8>);
impl Borrow<MyStr> for MyString {
fn borrow(&self) -> &MyStr {
&*self.0 // <-- requires some cast/convertion/idk
}
}
Would it be safe to simple cast the reference from the Box within MyString to a &MyStr or would this be undefined behavior?
- Lenguaje dominante
- Rust
- Estrellas
- 137
- Forks
- 15
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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 CAD97/pointer-utils
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
CAD97/pointer-utils#88 · 1 comentario ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
CAD97/pointer-utils#87 · 3 reacciones ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
CAD97/pointer-utils#85 · 3 comentarios ·
-
FatErasedPtr Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
CAD97/pointer-utils#84 ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
CAD97/pointer-utils#75 · 3 comentarios ·
Todos los issues de CAD97/pointer-utils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
TheLarkInn/aipm#2413 ·
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
alexgorbatchev/simple-ptt#15 ·
-
tooling
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
todo:ticket
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
taikoxyz/taiko-mono#22168 · 1 comentario ·