Misc #20509
openDocument importance of #to_ary and #to_hash for Array#== and Hash#==
Description
Both Array#== and Hash#== provide special behaviour in case the other argument is not an Array/Hash but defines the special #to_ary/#to_hash methods. Those methods are never called, they are just checked for existence. And if they exist, other#== is called to allow the other argument to decide whether the two objects are equal.
I think this is worth mentioning in the documentation for Array#== and Hash#==.
[Background: In my PDF library HexaPDF I have defined two classes PDFArray and Dictionary which act like Array and Hash but provide special PDF specific behaviour. For PDFArray I defined the #to_ary method but for Dictionary just the #to_h method. I have come across a bug where comparing Arrays with PDFArrays just works as it should be but comparing Hashes with Dictionaries doesn't due to the absence of #to_hash (it seems I removed Dictionary#to_hash in 2017 due to problems with automatic destructuring when passing a Dictionary as argument; from what I see that should be no problem anymore, so I will just add it back).]