Up until now, the values used in a reactive table had to implement
a bunch of traits (such as Equality, Orderable etc ...).
The reason was that the implementation was relying on a sort of
those values to function properly (compute the diffs etc ...).
The other weird thing is that the implementation was returning
a sorted array of the values inserted and was perform a "unique"
operation on them for no good reason other than it was convenient
for the old implementation.
This new implementation fixes that, the values don't have any constraint
other than being frozen (the interned pointer is used to do the operations).
The values returned by "get" preserve repetitions.
PS: Turns out the new implementation fixed a long standing bug in the
incremental type-checker when a module was changing name.
PS2: I used the opportunity to also fix issue #72.
Up until now, the values used in a reactive table had to implement a bunch of traits (such as Equality, Orderable etc ...). The reason was that the implementation was relying on a sort of those values to function properly (compute the diffs etc ...). The other weird thing is that the implementation was returning a sorted array of the values inserted and was perform a "unique" operation on them for no good reason other than it was convenient for the old implementation.
This new implementation fixes that, the values don't have any constraint other than being frozen (the interned pointer is used to do the operations). The values returned by "get" preserve repetitions.
PS: Turns out the new implementation fixed a long standing bug in the incremental type-checker when a module was changing name.
PS2: I used the opportunity to also fix issue #72.