LINUX.ORG.RU

История изменений

Исправление vertexua, (текущая версия) :

fn main() {
    let arr = [1, 2, 3, 4, 5, 6];
    const INDEX: usize = 1024;

    println!("{:?}!", arr[INDEX]);
}

Вот кстати так отваливается ошибкой компиляции. Видно let не такой уже и иммутабельный для компилятора, раз у него все же есть адрес в мутабельной памяти и какой-то ковбойский код может через unsafe все поменять. А вот const - иммутабельный на этапе компиляции, вот этой штуке он доверяет

На этапе компиляции

error: index out of bounds: the len is 6 but the index is 1024

Исправление vertexua, :

fn main() {
    let arr = [1, 2, 3, 4, 5, 6];
    const INDEX: usize = 1024;

    println!("{:?}!", arr[INDEX]);
}

Вот кстати так отваливается ошибкой компиляции. Видно let не такой уже и иммутабельный для компилятора, раз у него все же есть адрес в мутабельной памяти и какой-то ковбойский код может через unsafe все поменять. А вот const - иммутабельный на этапе компиляции, вот этой штуке он доверяет

error: index out of bounds: the len is 6 but the index is 1024

Исходная версия vertexua, :

fn main() {
    let arr = [1, 2, 3, 4, 5, 6];
    const INDEX: usize = 1024;

    println!("{:?}!", arr[INDEX]);
}

Вот кстати так отваливается ошибкой компиляции.