xgadget/binary/
file_format.rs

1use core::str::FromStr;
2
3use crate::error::Error;
4
5/// File format
6#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
7pub enum Format {
8    /// Unknown file format
9    Unknown,
10    /// ELF
11    ELF,
12    /// PE
13    PE,
14    /// MachO
15    MachO,
16    /// Raw executable bytes (no file format)
17    Raw,
18}
19
20impl FromStr for Format {
21    type Err = Error;
22
23    fn from_str(s: &str) -> Result<Self, Self::Err> {
24        match s {
25            "unknown" => Ok(Format::Unknown),
26            "elf" => Ok(Format::ELF),
27            "pe" => Ok(Format::PE),
28            "macho" => Ok(Format::MachO),
29            "raw" => Ok(Format::Raw),
30            _ => Err(Error::UnsupportedFileFormat),
31        }
32    }
33}