1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use std::fmt;

use crate::core::target_triple as tt;

#[derive(PartialEq, PartialOrd, Eq, Ord, Debug)]
pub struct TargetTriple {
    pub architecture: tt::Arch,
    pub sub: Option<tt::Sub>,
    pub vendor: tt::Vendor,
    pub sys: tt::Sys,
    pub abi: tt::ABI,
}

impl fmt::Display for TargetTriple {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match &self.sub {
            Some(sub) => write!(
                f,
                "{}{}-{}-{}-{}",
                self.architecture, sub, self.vendor, self.sys, self.abi
            ),
            None => write!(
                f,
                "{}-{}-{}-{}",
                self.architecture, self.vendor, self.sys, self.abi
            ),
        }
    }
}