#[non_exhaustive]pub struct InlineYEncBlock {
pub begin_offset: u32,
pub begin_length: u32,
pub filename: String,
pub file_size: u64,
pub part: Option<u32>,
pub total_parts: Option<u32>,
pub part_begin: Option<u64>,
pub part_end: Option<u64>,
pub data: Vec<u8>,
pub crc32_verified: bool,
pub is_encoding_problem: bool,
}Expand description
A single yEnc-encoded block found inside a part body.
All byte offsets are absolute — they are in the same coordinate space
as ParsedPart::body_range and the raw buffer passed to
scan_inline_yencode().
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.begin_offset: u32Byte offset of the =ybegin line within raw.
Slicing raw[begin_offset .. begin_offset + begin_length] yields the
complete yEnc article from the =ybegin line through the =yend line
(inclusive of its line ending).
begin_length: u32Byte length of the entire block: from the start of =ybegin through
the end of =yend (inclusive of its newline).
When [is_encoding_problem] is true, this field holds the length
of the =ybegin line only (up to and including its newline), not the
full block through =yend. The =yend line could not be located
because decoding failed before it was reached. Do not rely on
begin_offset + begin_length spanning a complete block when
is_encoding_problem is set.
filename: StringFilename from the name= field of =ybegin.
Not sanitised against path traversal. Callers writing this to disk must
validate against .. and absolute paths.
Empty when [is_encoding_problem] is true and the block header
could not be parsed.
file_size: u64Total declared file size in bytes, from =ybegin size=. For multi-part
articles this is the size of the complete file, not just this part.
When [is_encoding_problem] is true, this field is 0 and does not
reflect a declared size (the header could not be parsed).
part: Option<u32>1-based part number from =ybegin part=. None for single-part articles.
total_parts: Option<u32>Total number of parts in the series from =ybegin total=.
None for single-part articles.
part_begin: Option<u64>1-based byte offset of the first byte of this part within the full file,
from =ypart begin=. None for single-part articles.
part_end: Option<u64>1-based byte offset of the last byte of this part within the full file,
from =ypart end=. None for single-part articles.
data: Vec<u8>Decoded binary payload.
crc32_verified: booltrue if the CRC32 in =yend was present and matched the decoded
bytes. false if no CRC field was present in the article (some older
encoders omit it).
is_encoding_problem: booltrue if any decoding error was encountered (missing =ybegin,
invalid header field, missing =yend, CRC mismatch, or any other
error returned by yencoding::decode).
When this is true, data may be empty or partial. The specific
yEnc error variant is not exposed — callers only see this boolean
flag. The underlying yencoding::YencError is consumed internally
to populate the sentinel fields; inspect data.is_empty(),
crc32_verified, and begin_length to distinguish failure modes.
Trait Implementations§
Source§impl Clone for InlineYEncBlock
impl Clone for InlineYEncBlock
Source§fn clone(&self) -> InlineYEncBlock
fn clone(&self) -> InlineYEncBlock
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for InlineYEncBlock
impl Debug for InlineYEncBlock
Source§impl<'de> Deserialize<'de> for InlineYEncBlock
impl<'de> Deserialize<'de> for InlineYEncBlock
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for InlineYEncBlock
Source§impl Hash for InlineYEncBlock
impl Hash for InlineYEncBlock
Source§impl PartialEq for InlineYEncBlock
impl PartialEq for InlineYEncBlock
Source§fn eq(&self, other: &InlineYEncBlock) -> bool
fn eq(&self, other: &InlineYEncBlock) -> bool
self and other values to be equal, and is used by ==.