История изменений
Исправление byko3y, (текущая версия) :
Такой подход просто не будет в общем случае работать: компилятор раста имеет право переупорядочивать поля структуры
А не все ли равно, какой порядок? Генерируешь новый экземпляр мономорфной функции под конкретную структуру — вот и все дела. Вплоть до копирования.
Если структуры связаны, то почему бы это и не выразить кодом?
struct B {
a: A,
...
}
Тогда можно будет отдать честную ссылку на подструктуру. Ну а если содержимое «случайно совпало», то может и правда не надо? Тем более, что в новой версии что-то может и поменяться
Go реализует такую композицию через делегацию (type embedding):
type B struct {
A
}
И внезапно ты можешь дергать поля A как поля B.
Исходная версия byko3y, :
Такой подход просто не будет в общем случае работать: компилятор раста имеет право переупорядочивать поля структуры
А не все ли равно, какой порядок? Генерируешь новый экземпляр мономорфной функции под конкретную структуру — вот и все дела. Вплоть до копирования.
Если структуры связаны, то почему бы это и не выразить кодом?
struct B {
a: A,
Тогда можно будет отдать честную ссылку на подструктуру. Ну а если содержимое «случайно совпало», то может и правда не надо? Тем более, что в новой версии что-то может и поменяться
Go реализует такую композицию через делегацию (type embedding):
type B struct {
A
}
И внезапно ты можешь дергать поля A как поля B.