`slice-dst`: Provide example for custom 'slices' using `SliceWithHeader`
- Lenguaje dominante
- Rust
- Estrellas
- 137
- Forks
- 15
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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:
```rust
struct MyString(Box>);
```
To mimicry `str` I want to implement `Borrow for MyString` and `ToOwned for MyStr` (`type Owned = MyString`). However, I have a problem defining `MyStr`. I could use a type alias:
```rust
type MyStr = SliceWithHeader;
```
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`:
```rust
struct MyStr(SliceWithHeader);
impl Borrow 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?
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
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.
Evaluación
- Stack tecnológico
- rust
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100