Вызов rustc из build-скрипта

Если вызываю rustc из cmd командой:

rustc +nightly --crate-type cdylib lib.rs

то всё норм, а если из build-скрипта другого проекта так:

Command::new("rustc").args(&[
        "+nightly",
        "--crate-type",
        "cdylib",
        "lib.rs"
    ]).current_dir("<path>")
    .status().unwrap();

то пишет:

error: multiple input filenames provided (first two filenames are `+nightly` and `lib.rs`)

почему так?

Скорее всего, в передаваемом билд-скрипту наборе путей для поиска исполняемых файлов сам rustc идёт раньше, чем rustup-враппер, а аргумент +nightly в норме именно rustup забирает.

Вообще не следует напрямую прописывать в билд-скрипте имя тулчейна, поскольку ломаться это будет в непредсказуемых местах… например, при попытке собрать с помощью nightly за конкретную дату.

Вообще не следует напрямую прописывать в билд-скрипте имя тулчейна

А как лучше? Нужно, чтобы была именно nightly.

Нужно написать это в докуменации, потому что юзеру виднее, как именно у него установлен тулчейн. Может, у него вообще свой тестовый билд компилятора. Или, скажем, только nightly и без rustup.

я насколько помню, там нужно дать для rustc недокументированный ключ, который можно подсмотреть, если запустить cargo build -v.