aboutsummaryrefslogtreecommitdiff
path: root/src/gen/map.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gen/map.rs')
-rw-r--r--src/gen/map.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gen/map.rs b/src/gen/map.rs
new file mode 100644
index 0000000..ba50eeb
--- /dev/null
+++ b/src/gen/map.rs
@@ -0,0 +1,16 @@
+use crate::gen::scope::FieldWithContext;
+use crate::gen::scope::MessageWithScope;
+
+/// Pair of (key, value) if this message is map entry
+pub(crate) fn map_entry<'a>(
+ d: &'a MessageWithScope,
+) -> Option<(FieldWithContext<'a>, FieldWithContext<'a>)> {
+ if d.message.is_map_entry() {
+ // `MessageDescriptor` validated the fields.
+ let key = d.fields()[0].clone();
+ let value = d.fields()[1].clone();
+ Some((key, value))
+ } else {
+ None
+ }
+}