Skip to main content

ferro_babe/
options.rs

1#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
2pub enum RecoveryMode {
3    #[default]
4    BestEffort,
5    Strict,
6}
7
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct DisassemblerOptions {
10    recovery: RecoveryMode,
11}
12
13impl Default for DisassemblerOptions {
14    fn default() -> Self {
15        Self {
16            recovery: RecoveryMode::BestEffort,
17        }
18    }
19}
20
21impl DisassemblerOptions {
22    #[must_use]
23    pub fn recovery(&self) -> RecoveryMode {
24        self.recovery
25    }
26}
27
28#[derive(Debug, Clone, Default)]
29pub struct DisassemblerBuilder {
30    options: DisassemblerOptions,
31}
32
33impl DisassemblerBuilder {
34    #[must_use]
35    pub fn recovery(mut self, recovery: RecoveryMode) -> Self {
36        self.options.recovery = recovery;
37        self
38    }
39
40    #[must_use]
41    pub fn build(self) -> Disassembler {
42        Disassembler::new(self.options)
43    }
44}
45
46use crate::Disassembler;