Skip to content

Commit eb33906

Browse files
authored
Replace vector of tuples with BTreeMap which already is sorted and free of duplicates (#1177)
1 parent 17b353d commit eb33906

File tree

4 files changed

+14
-16
lines changed

4 files changed

+14
-16
lines changed

dev-tools/gen-target-info/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,4 @@ publish = false
66

77
[dependencies]
88
serde = { version = "1.0.163", features = ["derive"] }
9-
serde-tuple-vec-map = "1.0.1"
109
serde_json = "1.0.107"

dev-tools/gen-target-info/src/main.rs

+5-9
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,26 @@
11
use gen_target_info::{get_target_specs_from_json, write_target_tuple_mapping, RustcTargetSpecs};
2-
use std::{fs::File, io::Write as _};
2+
use std::{collections::BTreeMap, fs::File, io::Write as _};
33

44
const PRELUDE: &str = r#"//! This file is generated code. Please edit the generator
55
//! in dev-tools/gen-target-info if you need to make changes.
66
77
"#;
88

99
fn generate_riscv_arch_mapping(f: &mut File, target_specs: &RustcTargetSpecs) {
10-
let mut riscv_target_mapping = target_specs
10+
let riscv_target_mapping = target_specs
1111
.0
1212
.iter()
1313
.filter_map(|(target, target_spec)| {
1414
let arch = target.split_once('-').unwrap().0;
1515
(arch.contains("riscv") && arch != target_spec.arch)
1616
.then_some((arch, &*target_spec.arch))
1717
})
18-
.collect::<Vec<_>>();
19-
riscv_target_mapping.sort_unstable_by_key(|(arch, _)| &**arch);
20-
riscv_target_mapping.dedup();
18+
.collect::<BTreeMap<_, _>>();
2119
write_target_tuple_mapping(f, "RISCV_ARCH_MAPPING", &riscv_target_mapping);
2220
}
2321

2422
fn generate_windows_triple_mapping(f: &mut File, target_specs: &RustcTargetSpecs) {
25-
let mut windows_target_mapping = target_specs
23+
let windows_target_mapping = target_specs
2624
.0
2725
.iter()
2826
.filter_map(|(target, target_spec)| {
@@ -31,9 +29,7 @@ fn generate_windows_triple_mapping(f: &mut File, target_specs: &RustcTargetSpecs
3129
(os.contains("windows") && target != &*target_spec.llvm_target)
3230
.then_some((&**target, &*target_spec.llvm_target))
3331
})
34-
.collect::<Vec<_>>();
35-
windows_target_mapping.sort_unstable_by_key(|(triple, _)| &**triple);
36-
windows_target_mapping.dedup();
32+
.collect::<BTreeMap<_, _>>();
3733
write_target_tuple_mapping(f, "WINDOWS_TRIPLE_MAPPING", &windows_target_mapping);
3834
}
3935

dev-tools/gen-target-info/src/target_specs.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
use serde::Deserialize;
2+
use std::collections::BTreeMap;
23

34
#[derive(Debug, Deserialize)]
45
#[serde(transparent)]
56
pub struct PreLinkArgs(
67
/// First field in the linker name,
78
/// second field is the args.
8-
#[serde(with = "tuple_vec_map")]
9-
pub Vec<(String, Vec<String>)>,
9+
pub BTreeMap<String, Vec<String>>,
1010
);
1111

1212
#[derive(Debug, Deserialize)]
@@ -28,6 +28,5 @@ pub struct TargetSpec {
2828
#[serde(transparent)]
2929
pub struct RustcTargetSpecs(
3030
/// First field in the tuple is the rustc target
31-
#[serde(with = "tuple_vec_map")]
32-
pub Vec<(String, TargetSpec)>,
31+
pub BTreeMap<String, TargetSpec>,
3332
);

dev-tools/gen-target-info/src/write.rs

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1-
use std::{fmt::Write as _, fs, io::Write as _};
1+
use std::{collections::BTreeMap, fmt::Write as _, fs, io::Write as _};
22

3-
pub fn write_target_tuple_mapping(f: &mut fs::File, variable_name: &str, data: &[(&str, &str)]) {
3+
pub fn write_target_tuple_mapping(
4+
f: &mut fs::File,
5+
variable_name: &str,
6+
data: &BTreeMap<&str, &str>,
7+
) {
48
let mut content = format!("pub const {variable_name}: &[(&str, &str)] = &[\n");
59

610
for (f1, f2) in data {

0 commit comments

Comments
 (0)