@@ -27,7 +27,6 @@ use axum::{
2727 extract:: Extension ,
2828 response:: { IntoResponse , Response as AxumResponse } ,
2929} ;
30- use cargo_metadata:: Dependency ;
3130use chrono:: { DateTime , Utc } ;
3231use futures_util:: stream:: TryStreamExt ;
3332use log:: warn;
@@ -41,7 +40,7 @@ pub(crate) struct CrateDetails {
4140 pub ( crate ) version : Version ,
4241 pub ( crate ) description : Option < String > ,
4342 pub ( crate ) owners : Vec < ( String , String , OwnerKind ) > ,
44- pub ( crate ) dependencies : Vec < Dependency > ,
43+ pub ( crate ) dependencies : ReleaseDependencyList ,
4544 readme : Option < String > ,
4645 rustdoc : Option < String > , // this is description_long in database
4746 release_time : Option < DateTime < Utc > > ,
@@ -235,19 +234,15 @@ impl CrateDetails {
235234
236235 let parsed_license = krate. license . as_deref ( ) . map ( super :: licenses:: parse_license) ;
237236
238- let dependencies = if let Some ( value) = krate. dependencies {
239- match serde_json:: from_value :: < ReleaseDependencyList > ( value) {
240- Ok ( list) => list. into_iter_dependencies ( ) . collect ( ) ,
241- Err ( _) => {
242- // NOTE: we sometimes have invalid semver-requirement strings the database
243- // (at the time writing, 14 releases out of 2 million).
244- // We silently ignore those here.
245- Vec :: new ( )
246- }
247- }
248- } else {
249- Vec :: new ( )
250- } ;
237+ let dependencies = krate
238+ . dependencies
239+ . map ( |value| serde_json:: from_value :: < ReleaseDependencyList > ( value) )
240+ . transpose ( )
241+ // NOTE: we sometimes have invalid semver-requirement strings the database
242+ // (at the time writing, 14 releases out of 2 million).
243+ // We silently ignore those here.
244+ . unwrap_or_default ( )
245+ . unwrap_or_default ( ) ;
251246
252247 let mut crate_details = CrateDetails {
253248 name : krate. name ,
@@ -450,7 +445,7 @@ struct CrateDetailsPage {
450445 documentation_url : Option < String > ,
451446 repository_url : Option < String > ,
452447 repository_metadata : Option < RepositoryMetadata > ,
453- dependencies : Vec < Dependency > ,
448+ dependencies : ReleaseDependencyList ,
454449 releases : Vec < Release > ,
455450 readme : Option < String > ,
456451 build_status : BuildStatus ,
0 commit comments