vortex_file/footer/
segment.rs

1use vortex_buffer::Alignment;
2use vortex_error::VortexError;
3use vortex_flatbuffers::footer as fb;
4
5/// The location of a segment within a Vortex file.
6#[derive(Clone, Debug)]
7pub struct Segment {
8    pub offset: u64,
9    pub length: u32,
10    pub alignment: Alignment,
11}
12
13impl From<&Segment> for fb::Segment {
14    fn from(value: &Segment) -> Self {
15        fb::Segment::new(value.offset, value.length, value.alignment.exponent(), 0, 0)
16    }
17}
18
19impl TryFrom<&fb::Segment> for Segment {
20    type Error = VortexError;
21
22    fn try_from(value: &fb::Segment) -> Result<Self, Self::Error> {
23        Ok(Self {
24            offset: value.offset(),
25            length: value.length(),
26            alignment: Alignment::from_exponent(value.alignment_exponent()),
27        })
28    }
29}