Current implementation of TrieSet works with a backing TrieMap, which works just fine, but is not completely memory-efficient because we allocate SNodes for values (and LNodes for key/value pairs).
Given we are always storing Booleans, we should be able to specialize to not hold values -- which means the TrieMap infra would be duplicated to specialize for TrieSet case.
This will lead to code duplication, which is a maintenance and UT burden, but the result would be more memory-efficient TrieSet.
Current implementation of TrieSet works with a backing TrieMap, which works just fine, but is not completely memory-efficient because we allocate SNodes for values (and LNodes for key/value pairs).
Given we are always storing Booleans, we should be able to specialize to not hold values -- which means the TrieMap infra would be duplicated to specialize for TrieSet case.
This will lead to code duplication, which is a maintenance and UT burden, but the result would be more memory-efficient TrieSet.