I'm increasingly convinced that Python/JS-style duck typing is always a mistake, since you can't do default function impls for traits. Just use inheritance.
Rust's enums are even weirder, since they mix structuring with discrimination. You end up having to write everything twice most of the time. Again, use inheritance, though you'll have to choose between if
chains and virtual function calls.
Python's pathlib
has a major footgun in that ./foo
collapses to foo
, negating the main point of writing it that way in the first place.