summaryrefslogtreecommitdiff
path: root/dhall/src/syntax/ast/import.rs
diff options
context:
space:
mode:
Diffstat (limited to 'dhall/src/syntax/ast/import.rs')
-rw-r--r--dhall/src/syntax/ast/import.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/dhall/src/syntax/ast/import.rs b/dhall/src/syntax/ast/import.rs
index 75d7946..c45fe51 100644
--- a/dhall/src/syntax/ast/import.rs
+++ b/dhall/src/syntax/ast/import.rs
@@ -1,3 +1,5 @@
+use crate::syntax::trivial_result;
+
/// The beginning of a file path which anchors subsequent path components
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum FilePrefix {
@@ -75,6 +77,12 @@ impl<SE> URL<SE> {
headers,
})
}
+ pub fn map_ref<'a, SE2>(
+ &'a self,
+ f: impl FnOnce(&'a SE) -> SE2,
+ ) -> URL<SE2> {
+ trivial_result(self.traverse_ref(|x| Ok(f(x))))
+ }
}
impl<SE> ImportTarget<SE> {
@@ -90,6 +98,12 @@ impl<SE> ImportTarget<SE> {
Missing => Missing,
})
}
+ pub fn map_ref<'a, SE2>(
+ &'a self,
+ f: impl FnOnce(&'a SE) -> SE2,
+ ) -> ImportTarget<SE2> {
+ trivial_result(self.traverse_ref(|x| Ok(f(x))))
+ }
}
impl<SE> Import<SE> {
@@ -103,4 +117,10 @@ impl<SE> Import<SE> {
hash: self.hash.clone(),
})
}
+ pub fn map_ref<'a, SE2>(
+ &'a self,
+ f: impl FnOnce(&'a SE) -> SE2,
+ ) -> Import<SE2> {
+ trivial_result(self.traverse_ref(|x| Ok(f(x))))
+ }
}