Метод as_ptr
Метод as_ptr возвращает необработанный указатель
*const u8 на первый байт строкового среза.
Строковый срез в Rust не хранит завершающий нулевой байт,
в отличие от C-строк, поэтому указатель указывает именно
на начало данных без дополнительного \0 в конце.
Параметров метод не принимает.
Возвращаемый указатель можно использовать для передачи
данных строки в код на C через FFI или для низкоуровневой
работы с памятью. Важно помнить, что указатель действителен
только пока существует сам строковый срез, и что длина
строки не передаётся вместе с указателем - её нужно
получать отдельно, например через метод len.
Синтаксис
str.as_ptr()
Пример
Давайте получим указатель на строку
"abcde" и выведем его на экран:
fn main()
{
let s = "abcde";
let ptr = s.as_ptr();
println!("{:p}", ptr);
}
Результат выполнения кода:
0x...
Пример
Давайте с помощью указателя и метода len
прочитаем первый байт строки "12345":
fn main()
{
let s = "12345";
let ptr = s.as_ptr();
let first = unsafe { *ptr };
println!("{}", first as char);
}
Результат выполнения кода:
"1"
Смотрите также
-
метод
as_bytes,
который возвращает строку как срез байтов -
метод
len,
который возвращает длину строки в байтах -
метод
as_bytes_mut,
который возвращает изменяемый срез байтов -
метод
get,
который возвращает срез строки по указанному диапазону