summaryrefslogtreecommitdiff
path: root/src/func/map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/func/map.rs')
-rw-r--r--src/func/map.rs59
1 files changed, 0 insertions, 59 deletions
diff --git a/src/func/map.rs b/src/func/map.rs
deleted file mode 100644
index 880fe3e6..00000000
--- a/src/func/map.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-//! A deduplicating map.
-
-use std::collections::HashMap;
-use std::hash::Hash;
-
-use crate::syntax::{Spanned, ParseResult};
-
-/// A deduplicating map type useful for storing possibly redundant arguments.
-#[derive(Debug, Clone, PartialEq)]
-pub struct ConsistentMap<K, V> where K: Hash + Eq {
- map: HashMap<K, V>,
-}
-
-impl<K, V> ConsistentMap<K, V> where K: Hash + Eq {
- pub fn new() -> ConsistentMap<K, V> {
- ConsistentMap { map: HashMap::new() }
- }
-
- /// Add a key-value pair.
- pub fn add(&mut self, key: K, value: V) -> ParseResult<()> {
- self.map.insert(key, value);
- // TODO
- Ok(())
- }
-
- /// Add a key-value pair if the value is not `None`.
- pub fn add_opt(&mut self, key: K, value: Option<V>) -> ParseResult<()> {
- Ok(if let Some(value) = value {
- self.add(key, value)?;
- })
- }
-
- /// Add a key-spanned-value pair the value is not `None`.
- pub fn add_opt_span(&mut self, key: K, value: Option<Spanned<V>>) -> ParseResult<()> {
- Ok(if let Some(spanned) = value {
- self.add(key, spanned.v)?;
- })
- }
-
- /// Call a function with the value if the key is present.
- pub fn with<F>(&self, key: K, callback: F) where F: FnOnce(&V) {
- if let Some(value) = self.map.get(&key) {
- callback(value);
- }
- }
-
- /// Create a new consistent map where keys and values are mapped to new
- /// keys and values. Returns an error if a new key is duplicate.
- pub fn dedup<F, K2, V2>(&self, _f: F) -> ParseResult<ConsistentMap<K2, V2>>
- where F: FnOnce(K, V) -> ParseResult<(K2, V2)>, K2: Hash + Eq {
- // TODO
- Ok(ConsistentMap::new())
- }
-
- /// Iterate over the (key, value) pairs.
- pub fn iter(&self) -> std::collections::hash_map::Iter<'_, K, V> {
- self.map.iter()
- }
-}