Типы данных
зачем нужен
дает гарантию, что в него всегда влезет любой адрес или отступ в памяти для целевой архитектуры. Из-за этого, в частности, для индексирования байт в строках используется, о чем на скрине сказано.
В каком именно смысле?
Если про “нельзя ли использовать i32 для индексации String” - нет. Но можно привести my_string[n as usize].
Если для своего типа реализуешь Index/IndexMut, то можешь какой хочешь тип там использовать.
для индексации вектора? только если как-то привести i32 к нужному типу - через as, into или еще что
fn main() {
let v = vec![1, 2];
let n: i32 = 0;
dbg!(v[n as usize]);
}
А почему вы хотите использовать i32 для индексации вектора? usize это “родной” тип для подобных индексов.
Кажется что вместо того, чтобы заставлять i32 работать, можно просто использовать usize:
-let i:i32 = 0;
+let i: usize = 0;
Ну или, если i32 обязательно нужен для чего-то, то можно действительно сделать приведение, например через as, как говорит @ozkriff.
