Like VariableSymbol, carries a precomputed FxHash of its
value alongside the Arc<str>. Constants often dominate
evaluator hot paths — a hash-join frontier index
(FxHashMap<GroundTerm, _>) hashes a constant on every probe,
and unify_one compares constants on every fact cell — so a
cached hash (fed as a single u64) plus a hash-prefiltered
equality cut the per-fact term cost. Profile justification:
profiling of a bulk rule-materialization benchmark showed
GroundTermPartialEq plus hash-join
index’s GroundTerm hashing at ~20 % of total samples, all
content-based on the constant Arc<str>.
Ordering stays content-based so BTreeSet / BTreeMap order
(a relation prefix index may rely on it for range queries) is
independent of the hasher seed — the same split
VariableSymbol makes.