diff options
Diffstat (limited to 'src/gen/map.rs')
-rw-r--r-- | src/gen/map.rs | 16 |
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 + } +} |