Oleg Alexandrov

Macros

Назад


Keyword Описание
concat_bytes Experimental Объединяет литералы в байтовый фрагмент.
concat_idents Experimental Объединяет идентификаторы в один идентификатор.
const_format_args Experimental То же, что format_args, но может использоваться в некоторых контекстах const.
format_args_nl Experimental То же, что format_args, но добавляет новую строку в конце.
log_syntax Experimental Выводит переданные токены в стандартный вывод.
trace_macros Experimental Включает или отключает функциональность трассировки, используемую для отладки других макросов.
assert Утверждает, что логическое выражение находится true во время выполнения.
assert_eq Утверждает, что два выражения равны друг другу (используя PartialEq).
assert_ne Утверждает, что два выражения не равны друг другу (используя PartialEq).
cfg Вычисляет логические комбинации флагов конфигурации во время компиляции.
column Расширяется до номера столбца, в котором оно было вызвано.
compile_error Вызывает сбой компиляции с указанным сообщением об ошибке при обнаружении.
concat Объединяет литералы в статический фрагмент строки.
dbg Выводит и возвращает значение заданного выражения для быстрой и грязной отладки.
debug_assert Утверждает, что логическое выражение находится true во время выполнения.
debug_assert_eq Утверждает, что два выражения равны друг другу.
debug_assert_ne Утверждает, что два выражения не равны друг другу.
env Проверяет переменную среды во время компиляции.
eprint Выводит стандартную ошибку.
eprintln Выводит стандартную ошибку с новой строкой.
file Расширяется до имени файла, в котором оно было вызвано.
format_args Создает параметры для других макросов форматирования строк.
include Анализирует файл как выражение или элемент в соответствии с контекстом.
include_bytes Включает файл в качестве ссылки на массив байтов.
include_str Включает файл в кодировке UTF-8 в виде строки.
is_x86_feature_detected x86 or x86-64 Макрос для проверки во время выполнения, доступна ли функция ЦП на платформах x86/x86-64.
line Расширяется до номера строки, в которой оно было вызвано.
matches Возвращает, соответствует ли данное выражение какому-либо из заданных шаблонов.
module_path Расширяется до строки, представляющей текущий путь к модулю.
option_env Необязательно проверяет переменную среды во время компиляции.
panic Вызывает панику в текущем потоке.
print Печатает на стандартный вывод.
println Печатает на стандартный вывод с новой строкой.
stringify Упорядочивает его аргументы.
thread_local Объявите новый ключ локального хранилища потока типа of type std::thread::LocalKey.
todo Указывает на незаконченный код.
try Deprecated Разворачивает результат или распространяет его ошибку.
unimplemented Указывает на невыполненный код, вызывая панику сообщением “не реализовано”.
unreachable Указывает на недоступный код.
vec Создает Vec, содержащий аргументы.
write Записывает форматированные данные в буфер.
writeln Записывает форматированные данные в буфер с добавлением новой строки.
macro_rules! five_times {
    ($x:expr) => (5 * $x);
}

fn main() {
    assert_eq!(25, five_times!(2 + 3));
}
trait Sqr {
    fn sqr(self) -> Self;
}

macro_rules! impl_sqr {
    ($t:ty) => (
        impl Sqr for $t {
            fn sqr(self) -> Self {
                self * self
            }
        }
    );
}

impl_sqr!(f32);
impl_sqr!(f64);

fn main() {
    let x: f32 = 3.0;
    let y: f64 = 4.0;
    println!("{}, {}", x.sqr(), y.sqr());
}
fn add(a: i32, b: i32) -> i32 {
    a + b
}

macro_rules! add {
    ($a: expr) => {
        add($a, 2)
    };
    () => {
        add(1, 2)
    };
}

assert_eq!(add!(), 3);
assert_eq!(add!(4), 6);



Назад