Как управлять автомобилем go с флагом функций - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь изучить ржавчину, написав CLI, но я не могу сделать cargo run с переданными функциями, и я не понимаю, почему. Я читаю документы / стек и до сих пор не понимаю, почему это происходит. Такое ощущение, что это должно работать следующим образом https://doc.rust-lang.org/cargo/commands/cargo-run.html

Я пытаюсь запустить этот код

https://github.com/clap-rs/clap/blob/master/examples/17_yaml.rs

с командой cargo run --features=yaml или cargo run --features yaml. Я перепробовал много комбинаций, ни одна из них не сработала.

Моя машина go .toml выглядит так:

[dependencies.clap]
version = "*"
default-features = false
features = ["yaml"]

Когда я бегу, у меня появляется ошибка:

:!cargo run --features=yaml
error: Package `fun v0.1.0 (/Users/XXX/Projekty/rust/fun)` does not have these fe
atures: `yaml`

shell returned 101

Что я делаю не так?

1 Ответ

0 голосов
/ 12 апреля 2020

Их код ожидает, что вы клонировали репозиторий clap, изменили его каталог и затем оттуда запустили cargo run --features yaml --example 17_yaml. Вы можете узнать больше о том, как работает функция go примеров автомобилей здесь .

Если вы планируете копировать их код, как указано в этом примере кода, вы должны удалить этот атрибут условной компиляции:

// Note: If you're using clap as a dependency and don't have a feature for your users called
// "yaml", you'll need to remove the #[cfg(feature = "yaml")] conditional compilation attribute
#[cfg(feature = "yaml")]
fn main() {

В противном случае он загрузит эту другую основную реализацию и выдаст эту ошибку:

#[cfg(not(feature = "yaml"))]
fn main() {
    // As stated above, if clap is not compiled with the YAML feature, it is disabled.
    println!("YAML feature is disabled.");
    println!("Pass --features yaml to cargo when trying this example.");
}

Вы не На самом деле нужно передать --features в командной строке, если вы не запускаете их пример в их ящике, как описано выше. Вы также должны удалить всю эту функцию, если вы копируете их код! Это актуально только при запуске в качестве примера.

...