Макрос format!
Часть раздела Fundamentals путешествия по Rust на Coddy — урок 70 из 75.
В Rust макрос format! позволяет объединять текст с переменными понятным и настраиваемым способом. Этот макрос похож на println!, но вместо вывода результата в консоль он возвращает отформатированную строку, которую вы можете сохранить в переменной или использовать в других операциях.
Самый простой синтаксис использует неименованные заполнители {}:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);
println!("{}", formatted);
// Вывод: Name: Alice, Age: 30Вы можете использовать имена переменных непосредственно в плейсхолдерах:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");
println!("{}", formatted);
// Вывод: Name: Bob, Age: 25Вы можете указать позицию аргументов, используя числа:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
println!("{}", formatted);
// Вывод: second first thirdВы можете управлять форматированием значений с помощью спецификаторов формата:
// Форматирование чисел
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi);
// "3.14"
// Заполнение нулями
let padded = format!("{:0>5}", "123");
// "00123"Задание
ЛегкоСоздайте программу, которая генерирует секретный код на основе имени и года рождения, используя следующие правила:
- Берет первую букву имени и делает ее заглавной
- Переворачивает цифры года
- Окружает первую букву символами "⭐"
- Добавляет "-" между буквой в символах и перевернутым годом
Чтобы перевернуть строку, используйте следующий код: .to_string().chars().rev().collect::<String>()
Шпаргалка
Макрос format! объединяет текст с переменными и возвращает отформатированную строку, которую можно сохранить в переменной.
Базовый синтаксис с неименованными заполнителями:
let name = "Alice";
let age = 30;
let formatted = format!("Name: {}, Age: {}", name, age);Использование имен переменных непосредственно в заполнителях:
let name = "Bob";
let age = 25;
let formatted = format!("Name: {name}, Age: {age}");Указание позиций аргументов с помощью чисел:
let formatted = format!("{1} {0} {2}", "first", "second", "third");
// Результат: "second first third"Спецификаторы формата для управления выводом:
// Форматирование чисел
let pi = 3.1415926;
let formatted_float = format!("{:.2}", pi); // "3.14"
// Заполнение нулями
let padded = format!("{:0>5}", "123"); // "00123"Чтобы развернуть строку: .to_string().chars().rev().collect::<String>()
Попробуйте сами
use std::io;
fn main() {
let mut input_name = String::new();
let mut input_year = String::new();
io::stdin().read_line(&mut input_name).unwrap();
io::stdin().read_line(&mut input_year).unwrap();
let name = input_name.trim();
let year: i32 = input_year.trim().parse().unwrap();
// Напишите свой код ниже
let secret_code =
println!("{}", secret_code);
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический ввод