Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Comportamento de const

Pelo que entendi então, fazendo uma equivalência static se comporta como const de C, que aloca um endereço de memória, enquanto const se comporta como #define de C, que é resolvido em tempo de compilação.

Minha dúvida é, por exemplo, em C se eu fizer:

#define MY_CONST = (1. / 32.)

Todas as ocorrências de MY_CONST no código serão substituídas por (1. / 32.), não pelo resultado (0.03125).

Se em Rust eu fizer:

const MY_CONST: f32 = 1.0 / 32.0;

As ocorrências de MY_CONST serão substituídas por 1.0 / 32.0, como em C, ou pelo resultado 0.03125?

Essa dúvida faz sentido porque se for pela operação (como em C), isso pode gerar um overhead em alguns casos.

1 resposta
solução!

Olá, Rodrigo

Você está correto ao comparar const em Rust com #define em C. No Rust, quando você define uma constante como:

const MY_CONST: f32 = 1.0 / 32.0;

O compilador de Rust vai substituir todas as ocorrências de MY_CONST no código pelo resultado da operação, ou seja, 0.03125. Isso ocorre porque, como mencionado na aula, as constantes em Rust são resolvidas em tempo de compilação.

Então, diferentemente do C, onde #define substitui o código pela operação e a operação é realizada em tempo de execução, em Rust a operação é realizada em tempo de compilação, e o código é substituído pelo resultado da operação. Isso significa que não haverá overhead de tempo de execução para realizar essa operação em Rust.

Espero ter ajudado e bons estudos!