summaryrefslogtreecommitdiffstats
path: root/openpgp/src/packet/mod.rs
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-09-17 14:15:26 +0200
committerJustus Winter <justus@sequoia-pgp.org>2019-09-17 14:15:26 +0200
commite4220d83a084dd05381b3afeb90200e0e50e3204 (patch)
tree4dabe6a538b9d4ee2bac74de0a25809c111f2887 /openpgp/src/packet/mod.rs
parent0227b4e9c87820b01f4bd3f6969ade8e511e637c (diff)
openpgp: Make packet::Common::children private.
Diffstat (limited to 'openpgp/src/packet/mod.rs')
-rw-r--r--openpgp/src/packet/mod.rs38
1 files changed, 31 insertions, 7 deletions
diff --git a/openpgp/src/packet/mod.rs b/openpgp/src/packet/mod.rs
index b048e271..a3f81168 100644
--- a/openpgp/src/packet/mod.rs
+++ b/openpgp/src/packet/mod.rs
@@ -118,7 +118,7 @@ pub struct Common {
/// [`PacketPile`]: ../struct.PacketPile.html
/// [`PacketPile::from_file`]: ../struct.PacketPile.html#method.from_file
/// [`PacketParser`]: ../parse/struct.PacketParser.html
- pub children: Option<Container>,
+ children: Option<Container>,
/// Holds a packet's body.
///
@@ -186,16 +186,40 @@ impl Default for Common {
}
impl Common {
+ pub(crate) // for packet_pile.rs
+ fn children_ref(&self) -> Option<&Container> {
+ self.children.as_ref()
+ }
+
+ pub(crate) // for packet_pile.rs
+ fn children_mut(&mut self) -> Option<&mut Container> {
+ self.children.as_mut()
+ }
+
+ pub(crate) // for packet_pile.rs
+ fn set_children(&mut self, v: Option<Container>) -> Option<Container> {
+ std::mem::replace(&mut self.children, v)
+ }
+
+ fn children_iter<'a>(&'a self) -> slice::Iter<'a, Packet> {
+ if let Some(ref container) = self.children {
+ container.packets.iter()
+ } else {
+ let empty_packet_slice : &[Packet] = &[];
+ empty_packet_slice.iter()
+ }
+ }
+
+ /// Returns an iterator over the packet's immediate children.
+ pub fn children<'a>(&'a self) -> impl Iterator<Item = &'a Packet> {
+ self.children_iter()
+ }
+
/// Returns an iterator over all of the packet's descendants, in
/// depth-first order.
pub fn descendants(&self) -> Iter {
return Iter {
- children: if let Some(ref container) = self.children {
- container.packets.iter()
- } else {
- let empty_packet_slice : &[Packet] = &[];
- empty_packet_slice.iter()
- },
+ children: self.children_iter(),
child: None,
grandchildren: None,
depth: 0,