Yeah, I came to Rust from Scala and Kotlin, where equality is default-implemented (for caseclass and dataclass respectively, which is basically all we ever used), so this meme surprised me a bit.
I do actually like that you can decide a type cannot be compared, because sometimes it really just doesn’t make sense. How would you compare two HTTP clients, for example? But yeah, it certainly is a choice one can disagree with.
In Go “==” operator works for everything by default, I like it more:
type A struct { Name string Quality int } func main() { var x A var y A fmt.Printf("%v", x == y) }
(if all you want is to compare all corresponding fields which you usually want)
Yeah, I came to Rust from Scala and Kotlin, where equality is default-implemented (for
case class
anddata class
respectively, which is basically all we ever used), so this meme surprised me a bit.I do actually like that you can decide a type cannot be compared, because sometimes it really just doesn’t make sense. How would you compare two HTTP clients, for example? But yeah, it certainly is a choice one can disagree with.