@@ -90,6 +90,7 @@ mod sitemap;
90
90
mod source;
91
91
mod statics;
92
92
93
+ use crate :: db:: types:: Feature ;
93
94
use crate :: { impl_webpage, Context } ;
94
95
use chrono:: { DateTime , Utc } ;
95
96
use error:: Nope ;
@@ -519,6 +520,7 @@ pub(crate) struct MetaData {
519
520
pub ( crate ) default_target : String ,
520
521
pub ( crate ) doc_targets : Vec < String > ,
521
522
pub ( crate ) yanked : bool ,
523
+ pub ( crate ) features : Option < Vec < String > > ,
522
524
}
523
525
524
526
impl MetaData {
@@ -532,7 +534,8 @@ impl MetaData {
532
534
releases.rustdoc_status,
533
535
releases.default_target,
534
536
releases.doc_targets,
535
- releases.yanked
537
+ releases.yanked,
538
+ releases.features
536
539
FROM releases
537
540
INNER JOIN crates ON crates.id = releases.crate_id
538
541
WHERE crates.name = $1 AND releases.version = $2" ,
@@ -551,6 +554,7 @@ impl MetaData {
551
554
default_target : row. get ( 5 ) ,
552
555
doc_targets : MetaData :: parse_doc_targets ( row. get ( 6 ) ) ,
553
556
yanked : row. get ( 7 ) ,
557
+ features : MetaData :: parse_features ( row. get ( 8 ) ) ,
554
558
} )
555
559
}
556
560
@@ -565,6 +569,15 @@ impl MetaData {
565
569
} )
566
570
. unwrap_or_else ( Vec :: new)
567
571
}
572
+
573
+ fn parse_features ( features : Option < Vec < Feature > > ) -> Option < Vec < String > > {
574
+ features. map ( |vec| {
575
+ vec. iter ( )
576
+ . filter ( |feature| !feature. is_private ( ) )
577
+ . map ( |feature| feature. to_string ( ) )
578
+ . collect ( )
579
+ } )
580
+ }
568
581
}
569
582
570
583
#[ derive( Debug , Clone , PartialEq , Serialize ) ]
@@ -843,6 +856,7 @@ mod test {
843
856
"arm64-unknown-linux-gnu" . to_string( ) ,
844
857
] ,
845
858
yanked : false ,
859
+ features : None ,
846
860
} ;
847
861
848
862
let correct_json = json ! ( {
@@ -857,6 +871,7 @@ mod test {
857
871
"arm64-unknown-linux-gnu" ,
858
872
] ,
859
873
"yanked" : false ,
874
+ "features" : null
860
875
} ) ;
861
876
862
877
assert_eq ! ( correct_json, serde_json:: to_value( & metadata) . unwrap( ) ) ;
@@ -874,6 +889,7 @@ mod test {
874
889
"arm64-unknown-linux-gnu" ,
875
890
] ,
876
891
"yanked" : false ,
892
+ "features" : null,
877
893
} ) ;
878
894
879
895
assert_eq ! ( correct_json, serde_json:: to_value( & metadata) . unwrap( ) ) ;
@@ -891,6 +907,7 @@ mod test {
891
907
"arm64-unknown-linux-gnu" ,
892
908
] ,
893
909
"yanked" : false ,
910
+ "features" : null,
894
911
} ) ;
895
912
896
913
assert_eq ! ( correct_json, serde_json:: to_value( & metadata) . unwrap( ) ) ;
0 commit comments