Equality in rust is value equality per default, that’s what these traits are for. If you want to check pointer equality you’d use the std::ptr::eq function to check if two pointers are equal, which is rather rare in practice. You can also implement the PartialEq trait yourself if you need custom equality checks.

I worked on software at one point that had at it’s core a number of “modes” that it switched between. It was, at the time, in the process of migrating from enums and switch/case trees to an inheritance based system.

In practice this meant there was a single instance of “Mode” for each mode which used pointer equality to switch/case on modes like an enum.

To add a new mode (that did nothing) I think I had to change about 6 different places.

Dhs92
link
fedilink
22M

Not really related to the pointer thing, but Rust also has pattern matching based on Enums, as they’re actually sum-types and not just numbers

Create a post

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

  • Posts must be relevant to programming, programmers, or computer science.
  • No NSFW content.
  • Jokes must be in good taste. No hate speech, bigotry, etc.
  • 1 user online
  • 168 users / day
  • 347 users / week
  • 615 users / month
  • 2.35K users / 6 months
  • 1 subscriber
  • 1.64K Posts
  • 36.4K Comments
  • Modlog