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));
>// ИСПРАВЬТЕ ^ Закомментируйте эту строку.