Size: a a a

2021 May 27

goldstein опять in rust_offtopic
Явные обращения к .vtable. — никрасива
источник

H

Hirrolot in rust_offtopic
да, есть такое
источник

H

Hirrolot in rust_offtopic
можно исправить, в принципе
источник

H

Hirrolot in rust_offtopic
лол
источник

H

Hirrolot in rust_offtopic
источник

goldstein опять in rust_offtopic
VIRTUAL_OBJ() тоже никрасива
Я бы делал типа
State_new(t_MyState, &(MyState){ .x = 0 })
источник

goldstein опять in rust_offtopic
Где State_new это функция, а t_MyState это указатель на vtable
источник

goldstein опять in rust_offtopic
А если уж макрос, то нет никакой необходимости повторять название типа дважды
VIRTUAL_OBJ(State, MyState, { .x = 0 })
источник

H

Hirrolot in rust_offtopic
а где тут повторение?
источник

goldstein опять in rust_offtopic
    State st = VIRTUAL_OBJ(State, MyState, &(MyState){.x = 0});
источник

goldstein опять in rust_offtopic
MyState два раза
источник

H

Hirrolot in rust_offtopic
тогда придётся указывать State_impl_MyState в качестве vptr что тоже некрасиво
источник

goldstein опять in rust_offtopic
Ну и VIRTUAL_OBJ это чудовищно
источник

H

Hirrolot in rust_offtopic
это сузит область определения макроса, т.к. пользователь в качестве объекта может предоставить любой rvalue
источник

goldstein опять in rust_offtopic
dyn(State, MyState, { .x = 0 })
источник

goldstein опять in rust_offtopic
Для advanced-юзеров можно сделать второй макрос
источник

goldstein опять in rust_offtopic
А случай с литералом оптимизировать, ибо он довольно базовый
источник

H

Hirrolot in rust_offtopic
не знаю насчёт advanced. по сути в си часто opaque типы данных, которые просто указатели
источник

H

Hirrolot in rust_offtopic
так лучше, наверное
источник

goldstein опять in rust_offtopic
Эх, не хватает там растовых сексуальных макросов
dyn!(MyState { .x = 0 } as State)`
источник