Типы данных

Здравствуйте, у меня вопрос: что за usize? я не понимаю что это за тип и зачем он нужен. То что написано на официальном сайте я не понимаю.

usize - платформозависимый тип. его размер на разных платформах разный.

зачем нужен

дает гарантию, что в него всегда влезет любой адрес или отступ в памяти для целевой архитектуры. Из-за этого, в частности, для индексирования байт в строках используется, о чем на скрине сказано.

а на i32 его не как не получиться заменить?

В каком именно смысле?

Если про “нельзя ли использовать i32 для индексации String” - нет. Но можно привести my_string[n as usize].

Если для своего типа реализуешь Index/IndexMut, то можешь какой хочешь тип там использовать.

я про вместо usize использовать i32
так можно?
в моем случае

для индексации вектора? только если как-то привести 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.