Тип c_uint
Тип c_uint - это псевдоним для беззнакового целочисленного типа,
который используется при взаимодействии с кодом на языке C через
FFI (Foreign Function Interface). Он соответствует типу unsigned int
в C и обычно занимает 32 бита на большинстве платформ, однако его
точный размер зависит от целевой платформы и определяется реализацией
компилятора C. Тип доступен в модуле std::os::raw (или
core::ffi в no_std окружении) и применяется в сигнатурах
внешних функций, объявленных через extern "C".
Поскольку c_uint является псевдонимом конкретного примитивного
целочисленного типа, для него доступны все стандартные арифметические
операции, методы преобразования и сравнения. Использование этого типа
помогает обеспечить переносимость при связывании с C-библиотеками.
Синтаксис
use std::os::raw::c_uint;
// Объявление переменной
let x: c_uint = 42;
Пример
Давайте объявим переменную типа c_uint и выведем её значение:
use std::os::raw::c_uint;
fn main()
{
let x: c_uint = 42;
println!("{}", x);
}
Результат выполнения кода:
42
Пример
Давайте посмотрим размер типа c_uint в байтах
и выполним арифметическую операцию:
use std::os::raw::c_uint;
use std::mem::size_of;
fn main()
{
let a: c_uint = 10;
let b: c_uint = 20;
let sum = a + b;
println!("size: {}", size_of::<c_uint>());
println!("sum: {}", sum);
}
Результат выполнения кода:
size: 4
sum: 30
Пример
Давайте используем c_uint в объявлении внешней
C-функции и приведём результат к типу u64:
use std::os::raw::c_uint;
extern "C"
{
fn abs(input: i32) -> i32;
}
fn main()
{
let value: c_uint = 100;
let res = value as u64;
println!("{}", res);
unsafe
{
println!("{}", abs(-5));
}
}
Результат выполнения кода:
100
5
Смотрите также
-
тип
c_int,
который соответствует знаковому типу int в языке C -
тип
c_ulong,
который соответствует беззнаковому типу unsigned long в языке C -
тип
c_char,
который соответствует типу char в языке C -
ключевое слово
extern "C",
которое используется для объявления внешних C-функций