Перейти к основному содержимому
  1. Rust/

Работа с println! и интерполяцией строк в Rust

567 слов·3 минут· loading · loading · ·
Rust Dev
Оглавление
about-rust - Эта статья часть цикла.
Часть 3: Эта статья

Работа с println! и интерполяцией строк в Rust
#

Макрос println! позволяет напечатать необходимое выражение через \n.

\n - это аналог ввода через Enter.

Как это работает
#

Когда мы используем println!, например:

println!("sensors");

На консоль будет выведено сообщение “sensors”.

Добавление динамических значений в строку
#

Ранее мы добавляли в строку захардкоженные значения. Теперь мы можем добавить динамические значения, используя фигурные скобки {}. Это называется интерполяцией.

Пример:

let room_degree = 26;
println!("Temperature in room is {} degrees.", room_degree);

Rust интерполирует значение переменной room_degree в строку.

Использование выражений в интерполяции
#

Значения для интерполяции могут быть также динамическими выражениями, которые будут вычислены автоматически.

Пример:

let room_degree = 26;
println!("Temperature in the room is {} degrees.", room_degree - 2);

В этом случае будет выведен текст: “Temperature in the room is 24 degrees.”

Именованные аргументы
#

Начиная с Rust версии 1.58.0, можно использовать именованные аргументы или как называются в других языках - шаблонные литералы, для упрощения чтения и написания кода.

Пример:

let room_degree = 26;
println!("Temperature in the room is {room_degree} degrees.");

Ошибки и особенности
#

Если мы забудем указать круглые скобки, Rust не будет ничего вычислять, а просто выведет строку.

Пример:

println!("Temperature in the room is room_degree degrees.");

Выведет: “Temperature in the room is room_degree degrees.”

Также важно не допускать ошибку при указании имени переменной при интерполяции - компилятор будет ругаться.

Использование нескольких значений
#

Если необходимо указать несколько значений в строке, просто прописываем их через запятую.

Пример:

let living_room_degree = 26;
let kitchen_degree = 24;
println!("Temperature in the living room is {}. And temperature in the kitchen is {}", living_room_degree, kitchen_degree);

Либо воспользуйтесь новым синтаксисом:

println!("Temperature in the living room is {living_room_degree}. And temperature in the kitchen is {kitchen_degree}");

Позиционные аргументы
#

Rust был бы не растом если бы не имел ещё один способ для интерполяции строк. Такой способ есть это - позиционные аргументы. Мы можем “вставлять” значения переменных в строку (аналогия со слотами) указывая номер аргумента в фигурных скобках ( {0}, {1} и т.д. ). Это позволяет использовать одни и те же переменные в нескольких местах.

Пример:

let living_room_degree = 26;
let kitchen_degree = 24;
println!("Temperature in the living room is {0}. And temperature in the kitchen is {1}. But living room is {0} degrees.", living_room_degree, kitchen_degree);

В этом случае будет выведен текст: “Temperature in the living room is 26. And temperature in the kitchen is 24. But living room is 26 degrees.”

Форматирование строк с помощью padding и выравнивания
#

🦀 rust skill

Хотелось бы еще упомянуть о дополнительной возможности для форматирования строк с помощью println!. Вы можете использовать padding и выравнивание, чтобы “украсить” вывод данных.

Синтаксис форматирования
#

Общий синтаксис форматирования выглядит следующим образом:

{variable:padding alignment minimum.maximum}

Разберем составляющие этого синтаксиса:

  • variable: имя переменной, которую вы хотите вывести.
  • padding: символ, который будет использоваться для заполнения пробелов.
  • alignment: выравнивание текста (влево <, вправо >, или по центру ^).
  • minimum: минимальная длина строки.
  • maximum: максимальная длина строки (предваряется точкой).

Примеры использования
#

Выравнивание целого числа по правой стороне с нулями
#

let num = 123;
println!("{:0>5}", num);

Выведет: 00123

Выравнивание строки по центру с padding и минимальной длиной
#

let title = "Rust";
println!("{:-^10}", title);

Выведет: ----Rust----

Выравнивание строк влево и вправо с padding
#

let left_text = "Left";
let right_text = "Right";
println!("{:.<15}{:.>15}", left_text, right_text);

Выведет: Left.....................Right

Использование именованных аргументов с padding и выравниванием
#

let city1 = "Москва";
let city2 = "Уфа";
println!("{city1:->10} <--> {city2:-<10}", city1 = city1, city2 = city2);

Выведет: -----Москва <--> Уфа-----

about-rust - Эта статья часть цикла.
Часть 3: Эта статья

Связанные статьи

Паттерн "Строитель" в Rust
641 слово·4 минут· loading · loading
Rust Dev
Переменные в Rust: основы и примеры использования
303 слов·2 минут· loading · loading
Rust Dev
Hash Map в Rust
733 слов·4 минут· loading · loading
Rust Dev