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 ответов

5 просмотров

Док коменты это компайл тайм инфа, т.е. тебе нужно будет как минимум для каждого дескрипшина отдельный тип завести. Типа можно завернуть в какой-то макрос и погенерить для разных кейсов разные типы добавляя #[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- Автор вопроса
Alexander Sergeev
даже если юзать CommandFactory, строки для клэпа г...

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

Alexander Sergeev
даже если юзать CommandFactory, строки для клэпа г...

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

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

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

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

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

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

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

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Ребят, кто сталкивался с тем, что Electron.js не разворачивает билд React.js-приложения? Голый body в чёрном цвете, как и должно быть, но остального - нет. Билд работает исп...
..
6
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Anyone knows how to build this widget in Flutter? I have all the assets for round stations and the road, but how can I make the my widget animate between these stations? And h...
Mohammad Zamani
9
короче я не выдержал постоянно определять структуры, чтобы возвращать массивы разных типов. Как обычно еще это делают?
Павλо 🇺🇦
7
Если у очереди установлено x-message-ttl, при получении сообщения из этой очереди, можно узнать остаток времени жизни сообщения?
Сергей
8
Подскажите как мне лучше держать websocket сединение и переодически передавать в него данные? Сначала я сделал так: for _ in 1...1000 { try? await ws.send("test") try...
Mihail Verenich
2
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Карта сайта