Трейт UpperHex
Трейт UpperHex используется для форматирования значения
в верхнем шестнадцатеричном виде, то есть с использованием
цифр 0-9 и заглавных букв A-F. Он лежит в основе
спецификатора макросов форматирования,
таких как {:X}format!, println! и других.
Параметром метод fmt принимает изменяемую ссылку
на объект Formatter, который управляет процессом
форматирования.
Синтаксис
impl UpperHex for Type
{
fn fmt(&self, f: &mut Formatter) -> fmt::Result
{
// implementation
}
}
Пример
Встроенные целочисленные типы уже реализуют трейт
UpperHex. Давайте отформатируем число с помощью
спецификатора :
{:X}
fn main()
{
let res = format!("{:X}", 255);
println!("{}", res);
}
Результат выполнения кода:
"FF"
Пример
Давайте сравним верхний и нижний шестнадцатеричный формат для одного и того же числа:
fn main()
{
let upper = format!("{:X}", 48879);
let lower = format!("{:x}", 48879);
println!("upper: {}", upper);
println!("lower: {}", lower);
}
Результат выполнения кода:
upper: BEEF
lower: beef
Пример
Давайте реализуем трейт UpperHex для собственной
структуры и отформатируем её:
use std::fmt;
struct Color
{
r: u8,
g: u8,
b: u8,
}
impl fmt::UpperHex for Color
{
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result
{
write!(f, "#{:02X}{:02X}{:02X}", self.r, self.g, self.b)
}
}
fn main()
{
let c = Color { r: 255, g: 128, b: 0 };
println!("{:X}", c);
}
Результат выполнения кода:
#FF8000