Rust is centered around composition instead of inheritance, so there is not real Rust version of that pattern. You will have to chose a more problem specific solution instead. I remember that I had about the same problems when I started with Rust, but I had to let go of the inheritance based thought model, because it will simply not work well. There are, on the other hand, some talk about supporting virtual structs in the future, so it may be possible in some future 1.x version of Rust.
What you can do now is, for example, replacing
Foo with one or more traits if it doesn’t have to directly access stored data in its predefined methods. You can also add more “virtual” methods for data access, but they will be public if the trait is public. You can embed
Foo in the child struct and make it available through
Deref or some other way.
There are other patterns, but this is what I can come up with off the top of my head.