[−][src]Enum sequoia_openpgp::packet::prelude::Body
A packet's body holds either unprocessed bytes, processed bytes, or packets.
We conceptually divide packets into two parts: the header and the body. Whereas the header is read eagerly when the packet is deserialized, the body is only read on demand.
A packet's body is stored here either when configured via
PacketParserBuilder::buffer_unread_content
, when one of the
PacketPile
deserialization routines is used, or on demand for
a particular packet using the
PacketParser::buffer_unread_content
method.
There are three different types of packets:
- One packet, the literal data packet, includes unstructured
data. That data is stored in
Literal
.
- Some packets are containers. If the parser does not parse the
packet's child, either because the caller used
PacketParser::next
to get the next packet, or the maximum recursion depth was reached, then the packets can be stored here as a byte stream. (If the caller so chooses, the content can be parsed later using the regular deserialization routines, since the content is just an OpenPGP message.)
Variants
Unprocessed packet body.
The body has not been processed, i.e. it is still encrypted.
Note: if some of a packet's data is streamed, and the
PacketParser
is configured to buffer unread content, then
this is not the packet's entire content; it is just the unread
content.
Processed packed body.
The body has been processed, i.e. decompressed or decrypted, but not parsed into packets.
Note: if some of a packet's data is streamed, and the
PacketParser
is configured to buffer unread content, then
this is not the packet's entire content; it is just the unread
content.
Parsed packet body.
Used by container packets (such as the encryption and compression packets) to reference their immediate children. This results in a tree structure.
This is automatically populated when using the PacketPile
deserialization routines, e.g., PacketPile::from_file
. By
default, it is not automatically filled in by the
PacketParser
deserialization routines; this needs to be
done manually.
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Body
impl Send for Body
impl Sync for Body
impl Unpin for Body
impl UnwindSafe for Body
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,