rustc_attr_data_structures/
version.rs

1use std::fmt::{self, Display};
2
3use rustc_macros::{
4    Decodable, Encodable, HashStable_Generic, PrintAttribute, current_rustc_version,
5};
6
7use crate::PrintAttribute;
8
9#[derive(Encodable, Decodable, Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
10#[derive(HashStable_Generic, PrintAttribute)]
11pub struct RustcVersion {
12    pub major: u16,
13    pub minor: u16,
14    pub patch: u16,
15}
16
17impl RustcVersion {
18    pub const CURRENT: Self = current_rustc_version!();
19}
20
21impl Display for RustcVersion {
22    fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
23        write!(formatter, "{}.{}.{}", self.major, self.minor, self.patch)
24    }
25}