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