@@ -398,6 +398,9 @@ pub struct SpirvBuilder {
398398 // Location of a known `rustc_codegen_spirv` dylib, only required without feature `rustc_codegen_spirv`.
399399 #[ cfg_attr( feature = "clap" , clap( skip) ) ]
400400 pub rustc_codegen_spirv_location : Option < PathBuf > ,
401+ // Overwrite the toolchain like `cargo +nightly`
402+ #[ cfg_attr( feature = "clap" , clap( skip) ) ]
403+ pub toolchain_overwrite : Option < String > ,
401404
402405 /// The path of the "target specification" file.
403406 ///
@@ -454,7 +457,7 @@ impl Default for SpirvBuilder {
454457 rustc_codegen_spirv_location : None ,
455458 path_to_target_spec : None ,
456459 target_dir_path : None ,
457-
460+ toolchain_overwrite : None ,
458461 shader_panic_strategy : ShaderPanicStrategy :: default ( ) ,
459462 validator : ValidatorOptions :: default ( ) ,
460463 optimizer : OptimizerOptions :: default ( ) ,
@@ -934,6 +937,9 @@ fn invoke_rustc(builder: &SpirvBuilder) -> Result<PathBuf, SpirvBuilderError> {
934937 let profile = if builder. release { "release" } else { "dev" } ;
935938
936939 let mut cargo = Command :: new ( "cargo" ) ;
940+ if let Some ( toolchain) = & builder. toolchain_overwrite {
941+ cargo. arg ( format ! ( "+{}" , toolchain) ) ;
942+ }
937943 cargo. args ( [
938944 "build" ,
939945 "--lib" ,
0 commit comments