intern valtrees

This commit is contained in:
Lukas Markeffsky 2025-02-07 19:33:58 +01:00
parent eafa11c817
commit db57a5f454
1 changed files with 2 additions and 2 deletions

View File

@ -304,9 +304,9 @@ The most important rule for
this representation is that every value must be uniquely represented. In other this representation is that every value must be uniquely represented. In other
words: a specific value must only be representable in one specific way. For example: there is only words: a specific value must only be representable in one specific way. For example: there is only
one way to represent an array of two integers as a `ValTree`: one way to represent an array of two integers as a `ValTree`:
`ValTree::Branch(&[ValTree::Leaf(first_int), ValTree::Leaf(second_int)])`. `Branch([Leaf(first_int), Leaf(second_int)])`.
Even though theoretically a `[u32; 2]` could be encoded in a `u64` and thus just be a Even though theoretically a `[u32; 2]` could be encoded in a `u64` and thus just be a
`ValTree::Leaf(bits_of_two_u32)`, that is not a legal construction of `ValTree` `Leaf(bits_of_two_u32)`, that is not a legal construction of `ValTree`
(and is very complex to do, so it is unlikely anyone is tempted to do so). (and is very complex to do, so it is unlikely anyone is tempted to do so).
These rules also mean that some values are not representable. There can be no `union`s in type These rules also mean that some values are not representable. There can be no `union`s in type