Rust на примерах - страница 2

стр.

   • Обычные комментарии, которые игнорируются компилятором:

      • // Однострочный комментарий. Который завершается в конце строки.

      • /* Блочный комментарий, который продолжается до завершающего символа. */

   • Doc комментарии, которые будут сгенерированы в HTML документацию:

      • /// Генерация документации для функции.

      • //! Генерация документации для модуля.

>fn main() {

>// This is an example of a line comment

>// There are two slashes at the beginning of the line

>// And nothing written inside these will be read by the compiler

>// println!("Hello, world!");

>// Run it. See? Now try deleting the two slashes, and run it again.

>/*

>* This is another type of comment, a block comment. In general,

>* line comments are the recommended comment style. But

>* block comments are extremely useful for temporarily disabling

>* chunks of code. /* Block comments can be /* nested, */ */

>* so it takes only a few keystrokes to comment out everything

>* in this main() function. /*/*/* Try it yourself! */*/*/

>*/

>/*

>Note: The previous column of `*` was entirely for style. There's

>no actual need for it.

>*/

>// You can manipulate expressions more easily with block comments

>// than with line comments. Try deleting the comment delimiters

>// to change the result:

>let x = 5 + /* 90 + */ 5;

>println!("Is `x` 10 or 100? x = {}", x);

>}

>הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Документирование библиотек

Вывод обрабатывается несколькими макросами, которые определены в std::fmt. Вот некоторые из них:

   • format!: записывает форматированный текст в String.

   • print!: работает аналогично с format!, но текст выводится в консоль (io::stdout).

   • println!: аналогично print!, но в конце добавляется переход на новую строку.

   • eprint!: аналогично format!, но текст выводится в стандартный поток ошибок (io::stderr).

   • eprintln!: аналогично eprint!, но в конце добавляется переход на новую строку.

Весь текст обрабатывается аналогичным образом. Плюс данного метода в том, что корректность форматирования будет проверена на этапе компиляции программы.

>fn main() {

>// `{}` автоматически будет заменено на

>// аргументы. Они будут преобразованы в строку.

>println!("{} дней", 31);

>// Без суффиксов, 31 является i32. Можно изменить тип 31,

>// используя суффикс.

>// Существует множество способов работы с форматированным выводом. Можно указать

>// позицию для каждого аргумента.

>println!("{0}, это {1}. {1}, это {0}", "Алиса", "Боб");

>// Так же можно именовать аргументы.

>println!("{subject} {verb} {object}",

>object="ленивую собаку",

>subject="быстрая коричневая лиса",

>verb="прыгает через");

>println!("{} из {:b} людей знают, что такое двоичный код, а остальные нет.", 1, 2);

>// Можно выравнивать текст, сдвигая его на указанную ширину.

>// Данный макрос отобразит в консоли

>// " 1". 5 пробелов и "1".

>println!("{number:>width$}", number=1, width=6);

>// Можно добавить к цифрам пару нулей. Данный макрос выведет "000001".

>println!("{number:>0width$}", number=1, width=6);

>// Компилятор обязательно проверит, что в макрос передано правильное количество

>// аргументов.

>println!("Меня зовут {0}, {1} {0}", "Бонд");

>// ИСПРАВЬТЕ ^ Добавьте недостающий аргумент: "Джеймс"

>// Создаём структуру, которая хранит в себе `i32`. Назовём её `Structure`.

>#[allow(dead_code)]

>struct Structure(i32);

>// Однако, пользовательские типы данных, например, как эта структура

>// требуют более сложной обработки для вывода. Данный код не будет работать.

>println!("Эта структура `{}` не хочет выводится на экран...", Structure(3));

>// ИСПРАВЬТЕ ^ Закомментируйте эту строку.