# Elements in my \`Set\` are not unique

**URL:** <https://discourse.julialang.org/t/elements-in-my-set-are-not-unique/120985>\
**Category:** General Usage\
**Created:** [October 7, 2024, 2:47am UTC](https://discourse.julialang.org/t/elements-in-my-set-are-not-unique/120985 "2024-10-07T02:47:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![sadish-d](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sadish-d/32/48058_2.png) [@sadish-d](https://discourse.julialang.org/u/sadish-d)\
**Post date:** [October 7, 2024, 2:47am UTC](https://discourse.julialang.org/t/elements-in-my-set-are-not-unique/120985/1 "2024-10-07T02:47:51Z")

</div>

The documentation for `Set` says:

> Elements in a Set are unique, as determined by the elements’ definition of isequal.

This doesn’t seem to be true:

```julia
struct S
    x::Vector{Int}
    S() = new(Int[])
end
Base.isequal(::S, ::S) = true
@assert isequal(S(), S())
@assert Set([S()]) == Set([S(), S()]) # error
@assert length(Set([S()])) == length(Set([S(), S()])) # error

```

Am I missing something?

---

<div class="post-metadata">

**Author:** ![jar1](https://avatars.discourse-cdn.com/v4/letter/j/c0e974/32.png) [@jar1](https://discourse.julialang.org/u/jar1)\
**Post date:** [October 7, 2024, 3:00am UTC](https://discourse.julialang.org/t/elements-in-my-set-are-not-unique/120985/2 "2024-10-07T03:00:01Z")

</div>

You have to also define `Base.hash`.

---

<div class="post-metadata">

**Author:** ![sadish-d](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sadish-d/32/48058_2.png) [@sadish-d](https://discourse.julialang.org/u/sadish-d)\
**Post date:** [October 7, 2024, 3:14am UTC](https://discourse.julialang.org/t/elements-in-my-set-are-not-unique/120985/3 "2024-10-07T03:14:36Z")

</div>

Got it. Thanks.
