Rust qué datos contienen una variable que le ha asignado una estructura

Jan 16 2021

Si tenemos el siguiente código:

struct Person {
    age: i32
}

fn main() {
    let person =  Person{age : 52};
}

Sé cómo usar la estructura y todo, pero ¿qué hay dentro de la variable de persona?

¿Es un puntero al primer elemento de la estructura? (Porque todos los elementos son contiguos (?) Para que el compilador sepa dónde están todos los elementos)

Respuestas

5 Acorn Jan 16 2021 at 21:03

¿Qué hay dentro de la variable person?

Lo único "dentro" es age, por un total de 4 bytes.

¿Es un puntero al primer elemento de la estructura?

No, no es un puntero. Es solo el valor en sí, lo que significa que se almacenará en la pila del marco / función actual, prácticamente hablando (el compilador puede eliminarlo por completo de la memoria o incluso no usarlo, si el comportamiento observable no cambia, pero eso es una optimización: conceptualmente, la variable se coloca en la pila).

(Porque todos los elementos son contiguos (?) Para que el compilador sepa dónde están todos los elementos)

El compilador en la mayoría de los lenguajes compilados siempre conoce el diseño exacto de todos los tipos (excepto casos especiales). Esa es la razón por la que se pueden realizar muchas optimizaciones en esos idiomas con anticipación. Esta información normalmente se descarta en los lenguajes de programación del sistema, por lo que generalmente no admiten la reflexión y por qué es bastante difícil descompilarlos de nuevo en el código fuente.