Menu
Coddy logo textTech

Макрос 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"
challenge icon

Задание

Легко

Создайте программу, которая генерирует секретный код на основе имени и года рождения, используя следующие правила:

  • Берет первую букву имени и делает ее заглавной
  • Переворачивает цифры года
  • Окружает первую букву символами "⭐"
  • Добавляет "-" между буквой в символах и перевернутым годом

Чтобы перевернуть строку, используйте следующий код: .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);
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Fundamentals