Здравствуйте, у меня вопрос: что за 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.