I feel associating methods to data is very good in terms of reducing scope (avoids every function being global) and developer convenience.<p>But when people glorify OOP, they are usually focused on highlighting polymorphism — and that is when the “king has no clothes”.<p>Outside somewhat narrow usecases, polymorphism is often overrated. Even when functionally possible in OOP, there could be huge performance impacts of a simple change like changing an array to linked list.<p>The “traits” approach used in Rust (and others) is much more practical.