Traits
First off, Rust doesn't have all properties you would expect from a language that supports the object oriented paradigm, it doesn't have inheritance, to be exact. That's not tragic though, as many people nowadays prefer composition over inheritance, anyways. That basically means that instead of extending a base type with new data, you get a similar result by using your "base" type as a field inside your new one.
So types can't share data, but they can share behaviour. That is where traits come in. Although not entirely identical, most languages implement a similar concept as interfaces or abstract classes. They define an interface which types can implement and which code can use in an abstract manner. They get extremely flexible and powerful when combined with generics, but that's the topic of the next chapter. For now, we'll concentrate on basic things like polymorphism.