Числовые типы
Целочисленные типы
Беззнаковые целочисленные типы состоят из:
| Тип | Минимум | Максимум |
|---|---|---|
u8 | 0 | 28-1 |
u16 | 0 | 216-1 |
u32 | 0 | 232-1 |
u64 | 0 | 264-1 |
u128 | 0 | 2128-1 |
Знаковые целочисленные типы в дополнительном коде состоят из:
| Тип | Минимум | Максимум |
|---|---|---|
i8 | -(27) | 27-1 |
i16 | -(215) | 215-1 |
i32 | -(231) | 231-1 |
i64 | -(263) | 263-1 |
i128 | -(2127) | 2127-1 |
Типы с плавающей точкой
Типы с плавающей точкой IEEE 754-2008 “binary32” и “binary64” - это f32 и
f64 соответственно.
Машинно-зависимые целочисленные типы
Тип usize - это беззнаковый целочисленный тип с тем же количеством битов, что и
указательный тип платформы. Он может представлять каждый адрес памяти в процессе.
Note
Хотя
usizeможет представлять каждый адрес, преобразование указателя вusizeне обязательно является обратимой операцией. Для получения дополнительной информации смотрите документацию по выражениям приведения типа,std::ptrи в частности provenance.
Тип isize - это знаковый целочисленный тип с тем же количеством битов, что и
указательный тип платформы. Теоретическая верхняя граница размера объекта и массива
- это максимальное значение
isize. Это гарантирует, чтоisizeможет быть использован для вычисления разниц между указателями на объект или массив и может адресовать каждый байт внутри объекта вместе с одним байтом после конца.
usize и isize имеют ширину не менее 16 бит.
Note
Многие части кода на Rust могут предполагать, что указатели,
usizeиisizeявляются либо 32-битными, либо 64-битными. Как следствие, поддержка 16-битных указателей ограничена и может требовать явной заботы и подтверждения от библиотеки для поддержки.
Валидность битов
Для каждого числового типа T валидность битов T эквивалентна валидности битов
[u8; size_of::<T>()]. Неинициализированный байт не является допустимым u8.