Макрос println!
Макрос println! выводит форматированный текст
в стандартный поток вывода (консоль) и автоматически
добавляет символ новой строки \n в конце.
Первым параметром макрос принимает строку формата,
которая может содержать плейсхолдеры {},
а последующими параметрами - значения, которые нужно
подставить вместо этих плейсхолдеров.
Строка формата может содержать как обычный текст,
так и специальные последовательности для форматирования
значений: {} для вывода через трейт Display,
{:?} для вывода через трейт Debug,
{:#?} для красивого отладочного вывода,
{:x} для шестнадцатеричного представления,
{:b} для двоичного и другие.
Синтаксис
println!("строка формата");
println!("строка формата", значение1);
println!("строка формата", значение1, значение2);
Пример
Давайте выведем простое приветствие в консоль:
fn main()
{
println!("Hello, world!");
}
Результат выполнения кода:
"Hello, world!"
Пример
Давайте подставим значение переменной в строку
формата с помощью плейсхолдера {}:
fn main()
{
let name = "abcde";
println!("Hello, {}!", name);
}
Результат выполнения кода:
"Hello, abcde!"
Пример
Давайте выведем несколько значений сразу, перечислив их через запятую:
fn main()
{
let a = 1;
let b = 2;
let c = 3;
println!("{} + {} = {}", a, b, a + b);
println!("Values: {}, {}, {}", a, b, c);
}
Результат выполнения кода:
"1 + 2 = 3"
"Values: 1, 2, 3"
Пример
Давайте используем позиционные аргументы, чтобы подставлять значения в произвольном порядке:
fn main()
{
let a = "abcde";
let b = "12345";
println!("{0} {1} {0}", a, b);
}
Результат выполнения кода:
"abcde 12345 abcde"
Пример
Давайте выведем отладочную информацию о векторе
с помощью плейсхолдера {:?}:
fn main()
{
let vec = vec![1, 2, 3, 4, 5];
println!("{:?}", vec);
}
Результат выполнения кода:
"[1, 2, 3, 4, 5]"
Пример
Давайте выведем число в разных системах счисления
с помощью плейсхолдеров {:x}, {:b} и {:o}:
fn main()
{
let num = 255;
println!("hex: {:x}", num);
println!("bin: {:b}", num);
println!("oct: {:o}", num);
}
Результат выполнения кода:
"hex: ff"
"bin: 11111111"
"oct: 377"