| 153 | |
| 154 | impl<T: AtomSet> DynAtomSet for DynAtomRegistry<T> { |
| 155 | fn str_to_bits(&self, keyword: &str) -> u32 { |
| 156 | let static_atom = T::from_str(keyword); |
| 157 | let default_bits = T::default().as_bits(); |
| 158 | |
| 159 | if static_atom.as_bits() != default_bits { |
| 160 | let bits = static_atom.as_bits(); |
| 161 | debug_assert!(bits & (1 << ATOM_DYNAMIC_BIT) == 0, "Static atoms must have dynamic bit = 0"); |
| 162 | return bits; |
| 163 | } |
| 164 | |
| 165 | let bits = self.atomize(keyword); |
| 166 | debug_assert!(bits & (1 << ATOM_DYNAMIC_BIT) != 0, "Dynamic atoms must have dynamic bit = 1"); |
| 167 | bits |
| 168 | } |
| 169 | |
| 170 | fn bits_to_str(&self, bits: u32) -> &'static str { |
| 171 | if Self::is_dynamic(bits) { |