Well, you could if you either ensure, that the layout of the inherited part of a structure is the same for all structures, that inherit the same structure. Or you could return a tagged enum. However, with interfaces or traits, you just have to ensure that the table of interface/trait-methods of different types, that implement the same interface/trait. This table is constant and therefore a reference to it can be shared by every instance of the interface/trait.
Yes, it might be slower, because instead of direct method-calls, you have a layer of indirection, but you only need one copy of the method, not one for every type-combination. If all copies of this method have to fit in the L1-cache simultaneously but cannot, it might actually be faster.
While I think accidental failure of the Nordstream pipeline is an underrated explanation, such a glaring factual inaccuracy makes me skeptical of the viability of the specific theory espoused in this article.
The Rust => code is still a bit shorter, but not much and I don't think it matters much.