struct1(struct1),
struct2(struct2),
struct3(struct3)
}
Он вызывает предупреждение "unnecessary qualification". Поскольку мы решили, что структура правильная, я хочу это предупреждение задавить. Однако, указание
#[allow(unused_qualifications)]
если его поставить перед enum или перед struct1(struct1), не работает! Всё равно предупреждение выводится.
Работает, только если указать
#![allow(unused_qualifications)]
в самом начале файла.
Почему так?
А на какую часть кода он ругается? Теоретически он должен выдавать предупреждение только на пути вроде foo::Bar
warning: unnecessary qualification --> file.rs:41:17 | 41 | Struct1(Struct1), | ^^^^^^^ | note: the lint level is defined here --> file.rs:24:5 | 24 | unused_qualifications, | ^^^^^^^^^^^^^^^^^^^^^
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=5df94d293fd4596664f3763ca6ee33a6 не репродуцируется
по умолчанию allow(unused_qualifications), поэтому не воспроизводится
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=298c4297bbe016ba47d13e6089fb6a05 всё ещё нет
а в сообщении об ошибке нет help секции? Там обычно пишут как исправить
Я вместе с help секцией результат привёл :) Она начинает со слова "note"...
нет, help идёт после note
Help'а значит не было. Самому удивительно, почему уровень unused_qualifications действует и на такие случаи. Возможно, это ошибка. Это кстати заодно объясняет, почему предупреждение нельзя задавать outer-директивой.
Я бы всё-таки разобрался, warning странный, на playground'e с таким enum'ом не воспроизводится. Либо вылез баг линтера, либо в коде всё-таки что-то не так
Надеюсь руки дойдут локализовать. Но warning в боевом коде, его много, там не так просто выцепить в чем дело.
Обсуждают сегодня