Skip to main content

reifydb_codec/frame/
options.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 ReifyDB
3
4use crate::frame::format::Encoding;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
7pub enum CompressionLevel {
8	None,
9
10	#[default]
11	Fast,
12
13	Max,
14}
15
16#[derive(Debug, Clone)]
17pub struct EncodeOptions {
18	pub compression: CompressionLevel,
19
20	pub force_encoding: Option<Encoding>,
21}
22
23impl Default for EncodeOptions {
24	fn default() -> Self {
25		EncodeOptions {
26			compression: CompressionLevel::Fast,
27			force_encoding: None,
28		}
29	}
30}
31
32impl EncodeOptions {
33	pub fn none() -> Self {
34		EncodeOptions {
35			compression: CompressionLevel::None,
36			force_encoding: None,
37		}
38	}
39
40	pub fn fast() -> Self {
41		EncodeOptions {
42			compression: CompressionLevel::Fast,
43			force_encoding: None,
44		}
45	}
46
47	pub fn max() -> Self {
48		EncodeOptions {
49			compression: CompressionLevel::Max,
50			force_encoding: None,
51		}
52	}
53
54	pub fn forced(encoding: Encoding) -> Self {
55		EncodeOptions {
56			compression: CompressionLevel::Max,
57			force_encoding: Some(encoding),
58		}
59	}
60}