lzma_rs/encode/
options.rs

1/// Options for the `lzma_compress` function
2#[derive(Clone, Copy, Debug, Default)]
3pub struct Options {
4    /// Defines whether the unpacked size should be written to the header.
5    /// The default is
6    /// [`UnpackedSize::WriteToHeader(None)`](enum.encode.UnpackedSize.html#variant.WriteValueToHeader)
7    pub unpacked_size: UnpackedSize,
8}
9
10/// Alternatives for handling unpacked size
11#[derive(Clone, Copy, Debug)]
12pub enum UnpackedSize {
13    /// If the value is `Some(u64)`, write the provided u64 value to the header.
14    /// There is currently no check in place that verifies that this is the actual number of bytes
15    /// provided by the input stream.
16    /// If the value is `None`, write the special `0xFFFF_FFFF_FFFF_FFFF` code to the header,
17    /// indicating that the unpacked size is unknown.
18    WriteToHeader(Option<u64>),
19    /// Do not write anything to the header. The unpacked size needs to be stored elsewhere and
20    /// provided when reading the file. Note that this is a non-standard way of writing LZMA data,
21    /// but is used by certain libraries such as
22    /// [OpenCTM](http://openctm.sourceforge.net/).
23    SkipWritingToHeader,
24}
25
26impl Default for UnpackedSize {
27    fn default() -> UnpackedSize {
28        UnpackedSize::WriteToHeader(None)
29    }
30}