Задать вопрос
@Legasy_gavno

Что то странно работает макрос в rust. Кому обращаться?

Я начал учить rust. Смотрю ютуб и пользуюсь чатГПТ. И мне стало интересно про макросы и спросил чатгпт .
Сделай пример ГЕНЕРАЦИЮ КОДА МАКРОСЕ . И вот
macro_rules! generate_add_functions {
    ($($t:ty)*) => {
        $(
            fn add_$t(a: $t, b: $t) -> $t {
                a + b
            }
        )*
    };
}

generate_add_functions!(i32 u32 f32); // Генерация функций для типов i32, u32, f32

fn main() {
    let result1 = add_i32(2, 3);
    let result2 = add_u32(5, 7);
    let result3 = add_f32(1.5, 2.5);
    println!("Результаты: {}, {}, {}", result1, result2, result3);
}

и компиляторе получил
Compiling playground v0.0.1 (/playground)
error: expected one of `(` or `<`, found `i32`
  --> src/main.rs:5:20
   |
5  |             fn add_$t(a: $t, b: $t) -> $t {
   |                    ^^ expected one of `(` or `<`
...
12 | generate_add_functions!(i32 u32 f32); // Генерация функций для типов i32, u32, f32
   | ------------------------------------ in this macro invocation
   |
   = note: this error originates in the macro `generate_add_functions` (in Nightly builds, run with -Z macro-backtrace for more info)

что вызывает эту ошибку?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Ошибку вызывает то, что вы смотрите ютуб и спрашиваете ChatGPT. Прочитайте лучше учебник для начала, а потом можно будет и до документации по макросам добраться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы