Skip to content

Commit 2eec9bb

Browse files
authored
Merge pull request #9649 from Turbo87/split-features-in-index
Move `split_features()` fn into `crates_io_index` crate
2 parents 43f3c91 + 1c1a758 commit 2eec9bb

File tree

9 files changed

+13
-8
lines changed

9 files changed

+13
-8
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/crates_io_index/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,4 @@ url = "=2.5.2"
2929

3030
[dev-dependencies]
3131
claims = "=0.7.1"
32+
insta = "=1.40.0"

crates/crates_io_index/data.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
use crate::features::FeaturesMap;
12
use std::cmp::Ordering;
2-
use std::collections::BTreeMap;
33

44
#[derive(Serialize, Deserialize, Debug)]
55
pub struct Crate {
66
pub name: String,
77
pub vers: String,
88
pub deps: Vec<Dependency>,
99
pub cksum: String,
10-
pub features: BTreeMap<String, Vec<String>>,
10+
pub features: FeaturesMap,
1111
/// This field contains features with new, extended syntax. Specifically,
1212
/// namespaced features (`dep:`) and weak dependencies (`pkg?/feat`).
1313
///
@@ -18,7 +18,7 @@ pub struct Crate {
1818
/// will fail to load due to not being able to parse the new syntax, even
1919
/// with a `Cargo.lock` file.
2020
#[serde(skip_serializing_if = "Option::is_none")]
21-
pub features2: Option<BTreeMap<String, Vec<String>>>,
21+
pub features2: Option<FeaturesMap>,
2222
pub yanked: Option<bool>,
2323
#[serde(skip_serializing_if = "Option::is_none")]
2424
pub links: Option<String>,

src/models/feature.rs renamed to crates/crates_io_index/features.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ pub type FeaturesMap = BTreeMap<String, Vec<String>>;
66
/// values.
77
///
88
/// See <https://rust-lang.github.io/rfcs/3143-cargo-weak-namespaced-features.html>.
9-
pub fn split_features(features: FeaturesMap) -> (FeaturesMap, FeaturesMap) {
9+
pub fn split_features(
10+
features: impl IntoIterator<Item = (String, Vec<String>)>,
11+
) -> (FeaturesMap, FeaturesMap) {
1012
const ITERATION_LIMIT: usize = 100;
1113

1214
// First, we partition the features into two groups: those that use the new
@@ -49,6 +51,7 @@ pub fn split_features(features: FeaturesMap) -> (FeaturesMap, FeaturesMap) {
4951
mod tests {
5052
use super::*;
5153
use insta::{assert_compact_debug_snapshot, assert_debug_snapshot};
54+
use serde_json::json;
5255

5356
#[test]
5457
fn test_split_features_no_deps() {

crates/crates_io_index/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ extern crate tracing;
55

66
mod credentials;
77
mod data;
8+
pub mod features;
89
mod repo;
910
mod ser;
1011
#[cfg(feature = "testing")]

src/models/snapshots/crates_io__models__feature__tests__split_features_clap.snap renamed to crates/crates_io_index/snapshots/crates_io_index__features__tests__split_features_clap.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
source: src/models/feature.rs
2+
source: crates/crates_io_index/features.rs
33
expression: split_features(features)
44
---
55
(

src/models.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ mod default_versions;
2424
pub mod dependency;
2525
mod download;
2626
mod email;
27-
pub mod feature;
2827
mod follow;
2928
mod keyword;
3029
pub mod krate;

src/models/krate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use chrono::NaiveDateTime;
2+
use crates_io_index::features::split_features;
23
use diesel::associations::Identifiable;
34
use diesel::dsl;
45
use diesel::pg::Pg;
@@ -8,7 +9,6 @@ use secrecy::SecretString;
89
use thiserror::Error;
910

1011
use crate::controllers::helpers::pagination::*;
11-
use crate::models::feature::split_features;
1212
use crate::models::helpers::with_count::*;
1313
use crate::models::version::TopVersions;
1414
use crate::models::{

src/models/version.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use std::collections::BTreeMap;
22

33
use chrono::NaiveDateTime;
4+
use crates_io_index::features::FeaturesMap;
45
use derive_builder::Builder;
56
use diesel::prelude::*;
67
use serde::Deserialize;
78

89
use crate::util::errors::{bad_request, AppResult};
910

10-
use crate::models::feature::FeaturesMap;
1111
use crate::models::{Crate, Dependency, User};
1212
use crate::schema::*;
1313
use crate::sql::split_part;

0 commit comments

Comments
 (0)