use core::fmt;
#[cfg(feature = "unstable")]
use core::char;
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, Default)]
pub struct UnicodeVersion {
pub major: u16,
pub minor: u16,
pub micro: u16,
}
impl fmt::Display for UnicodeVersion {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}.{}.{}", self.major, self.minor, self.micro)
}
}
#[cfg(feature = "unstable")]
impl From<char::UnicodeVersion> for UnicodeVersion {
fn from(value: char::UnicodeVersion) -> UnicodeVersion {
UnicodeVersion {
major: value.major as u16,
minor: value.minor as u16,
micro: value.micro as u16,
}
}
}
#[cfg(test)]
mod tests {
#[cfg(feature = "unstable")]
#[test]
fn test_against_rust_internal() {
use core::char;
use super::UnicodeVersion;
let core_unicode_version: UnicodeVersion = char::UNICODE_VERSION.into();
assert!(core_unicode_version.major >= 10);
}
}