eql?(p1)
  public
  
    
    
Hash equality—other and struct refer to
the same hash key if they have the same
struct subclass and have equal member values (according to Object#eql?).
   
  
    Show source    
    
      static VALUE
rb_struct_eql(VALUE s, VALUE s2)
{
    if (s == s2) return Qtrue;
    if (!RB_TYPE_P(s2, T_STRUCT)) return Qfalse;
    if (rb_obj_class(s) != rb_obj_class(s2)) return Qfalse;
    if (RSTRUCT_LEN(s) != RSTRUCT_LEN(s2)) {
        rb_bug("inconsistent struct"); /* should never happen */
    }
    return rb_exec_recursive_paired(recursive_eql, s, s2, s2);
}