|
7 | 7 | //! Everything here is basically just a shim around calling either `rustbook` or |
8 | 8 | //! `rustdoc`. |
9 | 9 |
|
| 10 | +use std::collections::HashMap; |
10 | 11 | use std::io::{self, Write}; |
11 | 12 | use std::path::{Path, PathBuf}; |
12 | 13 | use std::{env, fs, mem}; |
@@ -806,40 +807,50 @@ fn doc_std( |
806 | 807 | // as a function parameter. |
807 | 808 | let out_dir = target_dir.join(target).join("doc"); |
808 | 809 |
|
809 | | - let mut cargo = builder::Cargo::new( |
810 | | - builder, |
811 | | - build_compiler, |
812 | | - Mode::Std, |
813 | | - SourceType::InTree, |
814 | | - target, |
815 | | - Kind::Doc, |
816 | | - ); |
| 810 | + let mut crates = requested_crates.to_vec(); |
| 811 | + let std_lib_crate_order = STD_PUBLIC_CRATES |
| 812 | + .iter() |
| 813 | + .enumerate() |
| 814 | + .map(|(i, v)| (v.to_string(), i)) |
| 815 | + .collect::<HashMap<_, _>>(); |
| 816 | + crates.sort_by_key(|c| std_lib_crate_order.get(c).unwrap_or(&usize::MAX)); |
817 | 817 |
|
818 | | - compile::std_cargo(builder, target, &mut cargo, requested_crates); |
819 | | - cargo |
820 | | - .arg("--no-deps") |
821 | | - .arg("--target-dir") |
822 | | - .arg(&*target_dir.to_string_lossy()) |
823 | | - .arg("-Zskip-rustdoc-fingerprint") |
824 | | - .arg("-Zrustdoc-map") |
825 | | - .rustdocflag("--extern-html-root-url") |
826 | | - .rustdocflag("std_detect=https://docs.rs/std_detect/latest/") |
827 | | - .rustdocflag("--extern-html-root-takes-precedence") |
828 | | - .rustdocflag("--resource-suffix") |
829 | | - .rustdocflag(&builder.version); |
830 | | - for arg in extra_args { |
831 | | - cargo.rustdocflag(arg); |
832 | | - } |
| 818 | + for krate in crates { |
| 819 | + let mut cargo = builder::Cargo::new( |
| 820 | + builder, |
| 821 | + build_compiler, |
| 822 | + Mode::Std, |
| 823 | + SourceType::InTree, |
| 824 | + target, |
| 825 | + Kind::Doc, |
| 826 | + ); |
833 | 827 |
|
834 | | - if builder.config.library_docs_private_items { |
835 | | - cargo.rustdocflag("--document-private-items").rustdocflag("--document-hidden-items"); |
836 | | - } |
| 828 | + compile::std_cargo(builder, target, &mut cargo, std::slice::from_ref(&krate)); |
| 829 | + cargo |
| 830 | + .arg("--no-deps") |
| 831 | + .arg("--target-dir") |
| 832 | + .arg(&*target_dir.to_string_lossy()) |
| 833 | + .arg("-Zskip-rustdoc-fingerprint") |
| 834 | + .arg("-Zrustdoc-map") |
| 835 | + .rustdocflag("--extern-html-root-url") |
| 836 | + .rustdocflag("std_detect=https://docs.rs/std_detect/latest/") |
| 837 | + .rustdocflag("--extern-html-root-takes-precedence") |
| 838 | + .rustdocflag("--resource-suffix") |
| 839 | + .rustdocflag(&builder.version); |
| 840 | + for arg in extra_args { |
| 841 | + cargo.rustdocflag(arg); |
| 842 | + } |
837 | 843 |
|
838 | | - let description = |
839 | | - format!("library{} in {} format", crate_description(requested_crates), format.as_str()); |
840 | | - let _guard = builder.msg(Kind::Doc, description, Mode::Std, build_compiler, target); |
| 844 | + if builder.config.library_docs_private_items { |
| 845 | + cargo.rustdocflag("--document-private-items").rustdocflag("--document-hidden-items"); |
| 846 | + } |
| 847 | + |
| 848 | + let description = |
| 849 | + format!("library{} in {} format", crate_description(&[krate]), format.as_str()); |
| 850 | + let _guard = builder.msg(Kind::Doc, description, Mode::Std, build_compiler, target); |
| 851 | + cargo.into_cmd().run(builder); |
| 852 | + } |
841 | 853 |
|
842 | | - cargo.into_cmd().run(builder); |
843 | 854 | builder.cp_link_r(&out_dir, out); |
844 | 855 | } |
845 | 856 |
|
|
0 commit comments