РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
768 of 1245 menu

Трейт Display

Трейт Display из модуля std::fmt задает пользовательское текстовое представление типа. Он используется в фигурных скобках {} в макросах форматирования, таких как println!, print!, format! и других. Реализуя этот трейт, вы указываете, как ваш тип должен выглядеть при выводе. Метод fmt принимает ссылку на Formatter и возвращает fmt::Result.

Синтаксис

use std::fmt; impl fmt::Display for TypeName { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { // implementation } }

Пример

Давайте реализуем трейт Display для структуры Point и выведем ее через println!:

use std::fmt; struct Point { x: i32, y: i32, } impl fmt::Display for Point { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "({}, {})", self.x, self.y) } } fn main() { let p = Point { x: 1, y: 2 }; println!("{}", p); }

Результат выполнения кода:

(1, 2)

Пример

Давайте реализуем трейт Display для перечисления Color и выведем его значения:

use std::fmt; enum Color { Red, Green, Blue, } impl fmt::Display for Color { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { match self { Color::Red => write!(f, "Red"), Color::Green => write!(f, "Green"), Color::Blue => write!(f, "Blue"), } } } fn main() { let c = Color::Green; println!("{}", c); }

Результат выполнения кода:

"Green"

Пример

Давайте используем трейт Display для форматирования с выравниванием по ширине:

use std::fmt; struct Wrapper(String); impl fmt::Display for Wrapper { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write!(f, "{}", self.0) } } fn main() { let w = Wrapper(String::from("abcde")); println!("[{:>10}]", w); println!("[{:<10}]", w); }

Результат выполнения кода:

[ abcde] [abcde ]

Смотрите также

  • трейт Debug,
    который задает отладочное представление типа
  • макрос println!,
    который выводит отформатированную строку в stdout
  • макрос format!,
    который создает строку с помощью форматирования
  • метод to_string,
    который преобразует значение в String через Display
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить