¿Por qué en Rust es necesario especificar explícitamente los lifetimes y cómo funciona esto?
Acabo de empezar a aprender Rust y me encontré con el concepto de lifetimes. Honestamente, no entiendo por qué es necesario especificarlos explícitamente. En otros lenguajes, como C++ o Java, las referencias y punteros funcionan sin anotaciones adicionales. ¿Por qué Rust me obliga a escribir `<'a>` y `&'a mut T`?
Aquí hay un ejemplo que me confunde. Quiero escribir una función que devuelva una referencia a un elemento de un array por índice:
```rust
fn get_element(arr: &[i32], index: usize) -> &i32 {
&arr[index]
}
```
El compilador dice: "missing lifetime specifier". ¿Por qué no puede deducirlo por sí mismo? Paso una referencia al array y devuelvo una referencia a su elemento. Es obvio que el lifetime de la referencia devuelta debería coincidir con el lifetime del array de entrada.
O aquí hay otro ejemplo. Quiero almacenar una referencia a una cadena en una estructura:
```rust
struct Person {
name: &str,
}
```
De nuevo un error: "missing lifetime specifier". ¿Por qué Rust no puede inferir automáticamente que la referencia en la estructura debe vivir
No answers yet.
Inicia sesión para dejar una respuesta
Blogs