use std::hash::{Hash, Hasher};
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct TargetTriple {
pub arch: String,
pub os: String,
}
impl TargetTriple {
pub fn new(arch: String, os: String) -> Self {
Self { arch, os }
}
pub fn from_key(key: &str) -> Option<Self> {
let parts: Vec<&str> = key.split('-').collect();
if parts.len() == 2 && !parts[0].is_empty() && !parts[1].is_empty() {
Some(Self::new(parts[0].to_string(), parts[1].to_string()))
} else {
None
}
}
pub fn to_key(&self) -> String {
format!("{}-{}", self.arch, self.os)
}
}
impl Hash for TargetTriple {
fn hash<H: Hasher>(&self, state: &mut H) {
self.arch.hash(state);
self.os.hash(state);
}
}