message: Allow adding targets at runtime
diff: @@ -130,6 +130,9 @@ impl RustwideBuilder {
  //
  // Removing it beforehand works fine, and prevents rustup from blocking the update later in
  // the method.
  + //
  + // Note that this means that non tier-one targets will be uninstalled on every update,
  + // and will not be reinstalled until explicitly requested by a crate.
  for target in installed_targets {
  if !targets_to_install.remove(&target) {
  self.toolchain.remove_target(&self.workspace, &target)?;
  @@ -453,6 +456,11 @@ impl RustwideBuilder {
  }
  let mut cargo_args = vec!["doc".to_owned(), "--lib".to_owned(), "--no-deps".to_owned()];
  if target != HOST_TARGET {
  + // If the explicit target is not a tier one target, we need to install it.
  + if !TARGETS.contains(&target) {
  + // This is a no-op if the target is already installed.
  + self.toolchain.add_target(&self.workspace, target)?;
  + }
  cargo_args.push("--target".to_owned());
  cargo_args.push(target.to_owned());
  };
  