Insert new mem flags into this set. Returns an existing `MemFlags` if the data already exists.
(&mut self, data: MemFlagsData)
| 443 | /// |
| 444 | /// Returns an existing `MemFlags` if the data already exists. |
| 445 | pub fn insert(&mut self, data: MemFlagsData) -> Result<MemFlags, MemFlagsSetOverflow> { |
| 446 | if let Some(&existing) = self.dedupe_map.get(&data) { |
| 447 | return Ok(existing); |
| 448 | } |
| 449 | let next = u32::try_from(self.mem_flags.len()) |
| 450 | .ok() |
| 451 | .and_then(MemFlags::with_number) |
| 452 | .ok_or(MemFlagsSetOverflow)?; |
| 453 | let key = self.mem_flags.push(data); |
| 454 | debug_assert_eq!(key, next); |
| 455 | self.dedupe_map.insert(data, key); |
| 456 | Ok(key) |
| 457 | } |
| 458 | |
| 459 | /// Insert new mem flags into this set, panicking if the index does not fit. |
| 460 | pub fn insert_unchecked(&mut self, data: MemFlagsData) -> MemFlags { |