I've tried this post using the AsBase trait but couldn't quite get to a minimal example. And since that post is a bit old, the lack of dyn sometimes gets a bit confusing.
This is what I thought I could do:
trait Entity {}
trait Part: Entity {}
trait System {
    fn parts(&self) -> &Vec<Box<dyn Entity>>; // This is the specification
}
struct System32 {
    parts: Vec<Box<dyn Part>>, // But this is what I have
}
impl System for System32 {
    fn parts(&self) -> &Vec<Box<dyn Entity>> {
        &self.parts // error: expected trait Entity, found trait Part
        // I've also tried:
        // &self.parts as &Vec<Box<dyn Entity>>
        // error: an `as` expression can only be used to convert between
        // primitive types or to coerce to a specific trait object
    }
}
Is this even possible? If yes, then how can I do the type conversion?
 
     
     
    