172 похожих чатов

Всем привет, вопрос по clap, может кто подскажет. Есть вот такая

структура и нужно выдавать различный дескрипшн для разных случаев, это возможно в derive Api?
pub struct Args {
#[arg(short('k'), long)]
/// SSH key location path (default is: $HOME/.ssh/id_rsa) <-- можно ли сюда как-то динамически задать строку из переменной?
pub ssh_key_path: Option<std::path::PathBuf>,
}

7 ответов

12 просмотров

Док коменты это компайл тайм инфа, т.е. тебе нужно будет как минимум для каждого дескрипшина отдельный тип завести. Типа можно завернуть в какой-то макрос и погенерить для разных кейсов разные типы добавляя #[doc] аттрибут. Второй вариант. это не через дерайв апи, а через https://docs.rs/clap/latest/clap/trait.CommandFactory.html и рефлексию в клепе. Поидее для дерайв структур этот трейт реализуется. а дальше https://docs.rs/clap/latest/clap/struct.Command.html#method.mut_arg и менять дескрипшин у аргумента нужного.

Vladimir
Док коменты это компайл тайм инфа, т.е. тебе нужно...

даже если юзать CommandFactory, строки для клэпа генерируются один раз при запуске. Если нужно менять строку во время работы - клэп не зайдет

Fred- Автор вопроса
Александр Сергеев
даже если юзать CommandFactory, строки для клэпа г...

Нужно условно компилить для разных ос, для винды один дескрипшн, для юникс другой. Так что команд фактори подойдет

Александр Сергеев
даже если юзать CommandFactory, строки для клэпа г...

может у него от переменных окружений зависит - или от файла\нейма программы - такое можно чекнуть до генерации матчера клепа. Теоретически можно даже какую-то субкоманду чекнуть, но это сложнее.

Fred
Нужно условно компилить для разных ос, для винды о...

ну если условно компилить, то тебе вообще просто атрибут можно с cfg_if задать

Fred
Нужно условно компилить для разных ос, для винды о...

#[cfg_attr(windows, doc = "windows.rs")] ну или у клепа там отдельный атрибут для хелпа можно заюзать

Vladimir
#[cfg_attr(windows, doc = "windows.rs")] ну или у ...

нихуя ти жостко виступаешь. учишь юних нациков расту

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
2
Карта сайта