#rust
#Ржавчина
Вопрос:
Скажем, у меня есть что-то вроде этого:
let SIZE = 100;
let a = [0; SIZE];
let b = -1;
Как я могу тогда сделать что-то вроде:
a[(SIZE/2) b];
Здесь есть несоответствие между индексом usize массива и i32 вычитаемого отрицательного числа. Есть ли удобный способ индексирования через массив также с отрицательными смещениями?
Ответ №1:
Как ответил @Aplet123, вы можете использовать приведения. Но если b
значение всегда отрицательное, вы можете сохранить абсолютное значение и просто заменить его:
let b = 1;
return a[SIZE/2 - b];
Ответ №2:
Сначала приведите его к isize
(целому числу со знаком того же размера, что и a usize
):
a[((SIZE / 2) as isize b) as usize]
Комментарии:
1. Вам нужно преобразовать результат обратно
usize
в индекс