Skip to main content

nbt_rust/
config.rs

1use crate::limits::NbtLimits;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
4pub enum ParseMode {
5    #[default]
6    Strict,
7    Compatible,
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq)]
11pub struct NbtReadConfig {
12    pub limits: NbtLimits,
13    pub parse_mode: ParseMode,
14}
15
16impl NbtReadConfig {
17    pub const fn new(limits: NbtLimits, parse_mode: ParseMode) -> Self {
18        Self { limits, parse_mode }
19    }
20
21    pub const fn strict(limits: NbtLimits) -> Self {
22        Self::new(limits, ParseMode::Strict)
23    }
24
25    pub const fn compatible(limits: NbtLimits) -> Self {
26        Self::new(limits, ParseMode::Compatible)
27    }
28
29    pub const fn with_parse_mode(mut self, parse_mode: ParseMode) -> Self {
30        self.parse_mode = parse_mode;
31        self
32    }
33
34    pub const fn with_limits(mut self, limits: NbtLimits) -> Self {
35        self.limits = limits;
36        self
37    }
38}
39
40impl Default for NbtReadConfig {
41    fn default() -> Self {
42        Self::strict(NbtLimits::default())
43    }
44}