Очевидно что ascii в диапазоне байта (0, 255), или (0b00000000, 0b11111111), так почему это в виде байтов называется, если по факту я получаю коды ascii?
use as_bytes::AsBytes as _;
#[repr(C)]
struct Example {
a: u8,
b: u8,
c: u8,
d: u8,
}
let example = Example {
a: 1,
b: 2,
c: 3,
d: 4,
};
let example_bytes = unsafe { example.as_bytes() };
println!("{example_bytes:?}"); // [1, 2, 3, 4]
то есть она возвращает слайс байт, то как структура в памяти выглядит
если совсем точно, она возвращает слайс u8 на ту же память, где сама структура находится
Откуда Вы тут ascii взяли, мне не понятно
Если говорить о String, то там utf-8 байты на куче, но в самой String находятся указатель на эту кучу, и 2 usize - длина и capacity в байтах. И вот именно представление этого указателя и 2 usize в памяти данный метод и вернёт, то есть слайс из 24 u8 (при условии 64bit платформы).
На диаграммах изображена структура формата указатель, длина и вес (это хранится в куче), а уже указатель ссылается на память в стеке в случае строкового литерала или любого числа, и на кучу если это String - это понятно.
то как структура в памяти выглядит
Но в таком случае должна была бы вернуться стуктура побайтово, то есть указатель, длина и вес, а возвращаются данные на которые указатель указывает, поэтому я запутался.
И снова же, это утверждение получается ложным:
И вот именно представление этого указателя и 2 usize в памяти данный метод и вернёт, то есть слайс из 24 u8 (при условии 64bit платформы).
Т.к. метод вернул не представление указателя, а данных на которые он ссылается и становится ещё менее понятно
На диаграммах изображена структура формата указатель, длина и вес (это хранится в куче), а уже указатель ссылается на память в стеке в случае строкового литерала или любого числа, и на кучу если это String - это понятно.
Но в таком случае должна была бы вернуться стуктура побайтово, то есть указатель, длина и вес, а возвращаются данные на которые указатель указывает, поэтому я запутался.
Вы так и не показали, на чём вызываете метод.
Но я, вместо того чтоб выдумывать и догадываться, что там должно быть просто посмотрел исходники либы и описал именно то, что она делает
Прояснил ситуацию, теперь понятно что такое представление в байтах - это число в позиционной системе с основанием 256 и определённым байтовым порядком.