Функция new класса CString
Функция new класса CString создает новую C-строку из переданного среза байтов.
Она принимает срез байтов &[u8] и возвращает результат типа Result<CString, NulError>.
Если в переданных данных встречается нулевой байт, функция возвращает ошибку NulError,
так как C-строки не могут содержать внутренние нулевые байты.
Функция автоматически добавляет завершающий нулевой байт в конец строки.
Синтаксис
CString::new(bytes)
Пример
Давайте создадим C-строку из байтов b"abcde":
use std::ffi::CString;
fn main()
{
let res = CString::new(b"abcde".to_vec());
println!("{:?}", res);
}
Результат выполнения кода:
Ok("abcde")
Пример
Давайте попробуем создать C-строку из байтов, содержащих нулевой байт:
use std::ffi::CString;
fn main()
{
let res = CString::new(b"abc\0de".to_vec());
println!("{:?}", res);
}
Результат выполнения кода:
Err(NulError(3, [97, 98, 99, 0, 100, 101]))
Пример
Давайте создадим C-строку и получим указатель на нее:
use std::ffi::CString;
fn main()
{
let c_string = CString::new("12345").unwrap();
let ptr = c_string.as_ptr();
println!("{:?}", ptr);
}
Результат выполнения кода:
0x... (адрес в памяти)