История изменений
Исправление q0tw4, (текущая версия) :
Дык, что помешает возвращать из библиотеки указатель на трейт?
Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*? А то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы. Ну если вместо таблицы вирт функций, встроенной в сам объект используется отдельный указатель на нее, автоматически подставляемый компилятором, но никак не сохраняющийся при касте объекта в void*.
Исправление q0tw4, :
Дык, что помешает возвращать из библиотеки указатель на трейт?
Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*? А то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы.
Исходная версия q0tw4, :
Дык, что помешает возвращать из библиотеки указатель на трейт?
Хм, а разная версия компилятора не помешает? И вообще оно сможет кастануть из void*, а то помню в кристале были реальные проблемы с тем, чтоб кастануть полиморфный указатель в void* и потом обратно - указатель терял динамический тип и вызывал методы базового класса. Собственно в расте вроде как тоже закос в мономорфность, так что могут быть проблемы.