LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

Как видишь в структуру ничего не вшито.

да все там вшито. не совсем понимаю запись на русте, но ты явно вызывал динамические методы у обьекта, тип которого известен при компиляции. тогда будет вызван метод статически. все ооп языки это делают ради оптимизации.

let c = C(AtomData::new("C", "C_GUID"));    
let cc = CC(C(AtomData::new("CC", "CC_GUID")));

вот тут с и сс имеют какие типы? вот их виртуальные методы и будут вызваны напрямую, даже если они виртуальные. раз ты строго указал(ну или вывел) тип переменной тут, и ни на что другого типа она не может ссылаться - значит можно диспатчить статически.

Исходная версия alysnix, :

Как видишь в структуру ничего не вшито.

да все там вшито. не совсем понимаю запись на русте, но ты явно вызывал динамические методы у обьекта, тип которого известен при компиляции. тогда будет вызван метод статически. все ооп языки это делают ради оптимизации.