Size: a a a

2020 March 22

AM

Aleksey Muravev in ГОРИ
Lain-dono
Зачем? А если я эту хуйню в файлики складываю например и так далее по списку извращений? В идеале у этого типа должно быть фиксированное выравнивание.
Я же сказал. Если хочется.
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
Я же сказал. Если хочется.
*если хочется поломать код

Ну ладно, не буду спорить. Если очень хочется, то да, можно.
источник

AM

Aleksey Muravev in ГОРИ
А с сериализацией, вижу у тебя боль. А если порядок полей в файле поменять? Или некоторые пропустить нужно?
источник

AM

Aleksey Muravev in ГОРИ
На каждое изменение формата код править?
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
А с сериализацией, вижу у тебя боль. А если порядок полей в файле поменять? Или некоторые пропустить нужно?
Это для примера. Это внутренний тип, который наружу виден не будет в итоге. Собсна в графические буферы тоже сериализация, но бесплатная за 0 инструкций.

Для сериализаторов этот тип будет выглядеть как массив из четырёх флоатов, если вообще будет сам сериализироваться.
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
На каждое изменение формата код править?
А вообще у нас всё ровно наоборот. Для общего случая есть либа serde, которая обеспечивает работу с сериализацией.

Для простых случаев одну строчку добавить: #[derive(Serialize, Deserialize)], а внутри оно примерно так-же быстро, будто ты ручками это всё писал.
источник

L

Lain-dono in ГОРИ
Но опять же случаи разные бывают.
источник

AM

Aleksey Muravev in ГОРИ
Пример. Есть структура с полям:
float;
float;
int32;
int64;
char;
Я хочу в тулзах поля писать в произвольно порядке, пропускать некоторые или лишнее писать. И двиг должен их грузить без переписывания кода сериализации. Это без всяких текстовых форматов и без обозначения порядка полей в хидере файла. Как в расте это разрулить?
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
Пример. Есть структура с полям:
float;
float;
int32;
int64;
char;
Я хочу в тулзах поля писать в произвольно порядке, пропускать некоторые или лишнее писать. И двиг должен их грузить без переписывания кода сериализации. Это без всяких текстовых форматов и без обозначения порядка полей в хидере файла. Как в расте это разрулить?
#[derive(Serialize, Deserialize)] + значения по умолчанию. И это с любыми форматами будет работать. Алсо сама структура и объявляет порядок полей. А как ты тулзы пишешь - это уже другая история, которая может вообще не относиться к сериализации.
источник

L

Lain-dono in ГОРИ
Яж сказал, оно за тебя это всё напишет.
источник

L

Lain-dono in ГОРИ
Собсна атрибут derive - это частный случай процедурных макросов.
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
Пример. Есть структура с полям:
float;
float;
int32;
int64;
char;
Я хочу в тулзах поля писать в произвольно порядке, пропускать некоторые или лишнее писать. И двиг должен их грузить без переписывания кода сериализации. Это без всяких текстовых форматов и без обозначения порядка полей в хидере файла. Как в расте это разрулить?
Есть несколько вариантов, как это всё будет выглядеть, но вот один пример: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=2c3b1fb891915fa2b7f8d978e8992403
источник

L

Lain-dono in ГОРИ
В данном конкретном случае можно не писать только поле age. Но очевидно это не единственный вариант, который может существовать.
источник

L

Lain-dono in ГОРИ
Порядок полей разумеется значения не имеет.
источник

L

Lain-dono in ГОРИ
источник

AM

Aleksey Muravev in ГОРИ
Lain-dono
Порядок полей разумеется значения не имеет.
А теперь без json(это элементарно) и текстовых форматов. Только байтики.
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
А теперь без json(это элементарно) и текстовых форматов. Только байтики.
Берём формат, который байтовый. Или пишем свой формат. В чём проблема?
источник

ML

Maksim Litvinov in ГОРИ
Anton
таб немного не так работает
Я знаю как таб работает. Именно поэтому, если пользоваться им АДЕКВАТНО, он должен заменять только семантические отступы (блоки), а не пихаться где попало, типа комментариев и выравнивания колонок имён переменных. В Go это работает замечательно. В других языках люди начинают холиворить, т.к. много неадекватов, использующих таб не по назначению. Хотя я сам приверженец табов, моё решение было "заменить табы на пробелы, а потом пускай правят вручную, раз наговнокодили". К счастью после перехода в Go это не требуется, т.к. табы используются именно там где нужно утилитой форматирования, которая запускается автоматом на каждый сейв.
источник

AM

Aleksey Muravev in ГОРИ
Lain-dono
Берём формат, который байтовый. Или пишем свой формат. В чём проблема?
Смотри кейс. Ты поле в структуре переименовал. Лайоут тот же. Но теперь это грузится иначе.
источник

L

Lain-dono in ГОРИ
Aleksey Muravev
Смотри кейс. Ты поле в структуре переименовал. Лайоут тот же. Но теперь это грузится иначе.
Зависит от формата, лол. Формат содержит имена полей? Если да, то алиас пилим для совместимости. Если нет, то всё и так работает.
источник