revive_llvm_builder/
sanitizer.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
5pub enum Sanitizer {
6 Address,
8 Memory,
10 MemoryWithOrigins,
12 Undefined,
14 Thread,
16 DataFlow,
18 AddressUndefined,
20}
21
22impl std::str::FromStr for Sanitizer {
23 type Err = String;
24 fn from_str(value: &str) -> Result<Self, Self::Err> {
25 match value.to_lowercase().as_str() {
26 "address" => Ok(Self::Address),
27 "memory" => Ok(Self::Memory),
28 "memorywithorigins" => Ok(Self::MemoryWithOrigins),
29 "undefined" => Ok(Self::Undefined),
30 "thread" => Ok(Self::Thread),
31 "dataflow" => Ok(Self::DataFlow),
32 "address;undefined" => Ok(Self::AddressUndefined),
33 value => Err(format!("Unsupported sanitizer: `{value}`")),
34 }
35 }
36}
37
38impl std::fmt::Display for Sanitizer {
39 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
40 match self {
41 Self::Address => write!(f, "Address"),
42 Self::Memory => write!(f, "Memory"),
43 Self::MemoryWithOrigins => write!(f, "MemoryWithOrigins"),
44 Self::Undefined => write!(f, "Undefined"),
45 Self::Thread => write!(f, "Thread"),
46 Self::DataFlow => write!(f, "DataFlow"),
47 Self::AddressUndefined => write!(f, "Address;Undefined"),
48 }
49 }
50}