(let (foo1 foo2 hytmp) (require 'cl-lib) (cl-defstruct foo slot1 slot2) (setq foo1 (make-foo :slot1 "abc" :slot2 "cba")) (setq foo2 (make-foo :slot1 "abc" :slot2 "cba")) (equal foo1 foo2) (setq hytmp (make-hash-table :test 'equal)) (puthash foo1 'foobar hytmp) (when (eq 'no (gethash foo2 hytmp 'no)) (error "Problematic hash")))