@@ -429,10 +429,8 @@ impl RustwideBuilder {
429
429
algs,
430
430
) ?;
431
431
432
- if let ( Some ( total) , Some ( documented) ) =
433
- ( res. result . total_items , res. result . documented_items )
434
- {
435
- add_doc_coverage ( & mut conn, release_id, total, documented) ?;
432
+ if let Some ( doc_coverage) = res. result . doc_coverage {
433
+ add_doc_coverage ( & mut conn, release_id, doc_coverage) ?;
436
434
}
437
435
438
436
add_build_into_database ( & mut conn, release_id, & res. result ) ?;
@@ -534,7 +532,7 @@ impl RustwideBuilder {
534
532
build : & Build ,
535
533
metadata : & Metadata ,
536
534
limits : & Limits ,
537
- ) -> Result < Option < ( i32 , i32 ) > > {
535
+ ) -> Result < Option < DocCoverage > > {
538
536
self . make_build_object (
539
537
target,
540
538
metadata,
@@ -573,16 +571,19 @@ impl RustwideBuilder {
573
571
. ok ( ) ;
574
572
if let Some ( json) = doc_coverage_json {
575
573
if let Ok ( Value :: Object ( m) ) = serde_json:: from_str ( & json) {
576
- let ( mut total , mut documented ) = ( 0 , 0 ) ;
574
+ let ( mut total_items , mut documented_items ) = ( 0 , 0 ) ;
577
575
for entry in m. values ( ) {
578
576
if let Some ( Value :: Number ( n) ) = entry. get ( "total" ) {
579
- total += n. as_i64 ( ) . unwrap_or ( 0 ) as i32 ;
577
+ total_items += n. as_i64 ( ) . unwrap_or ( 0 ) as i32 ;
580
578
}
581
579
if let Some ( Value :: Number ( n) ) = entry. get ( "with_docs" ) {
582
- documented += n. as_i64 ( ) . unwrap_or ( 0 ) as i32 ;
580
+ documented_items += n. as_i64 ( ) . unwrap_or ( 0 ) as i32 ;
583
581
}
584
582
}
585
- return Ok ( Some ( ( total, documented) ) ) ;
583
+ return Ok ( Some ( DocCoverage {
584
+ total_items,
585
+ documented_items,
586
+ } ) ) ;
586
587
}
587
588
}
588
589
Ok ( None )
@@ -648,16 +649,11 @@ impl RustwideBuilder {
648
649
. run ( )
649
650
. is_ok ( )
650
651
} ) ;
651
- let mut total_items = None ;
652
- let mut documented_items = None ;
653
- if successful {
654
- if let Some ( ( total, documented) ) =
655
- self . get_coverage ( target, build, metadata, limits) ?
656
- {
657
- total_items = Some ( total) ;
658
- documented_items = Some ( documented) ;
659
- }
660
- }
652
+ let doc_coverage = if successful {
653
+ self . get_coverage ( target, build, metadata, limits) ?
654
+ } else {
655
+ None
656
+ } ;
661
657
// If we're passed a default_target which requires a cross-compile,
662
658
// cargo will put the output in `target/<target>/doc`.
663
659
// However, if this is the default build, we don't want it there,
@@ -677,8 +673,7 @@ impl RustwideBuilder {
677
673
rustc_version : self . rustc_version . clone ( ) ,
678
674
docsrs_version : format ! ( "docsrs {}" , crate :: BUILD_VERSION ) ,
679
675
successful,
680
- total_items,
681
- documented_items,
676
+ doc_coverage
682
677
} ,
683
678
cargo_metadata,
684
679
target : target. to_string ( ) ,
@@ -732,14 +727,19 @@ struct FullBuildResult {
732
727
cargo_metadata : CargoMetadata ,
733
728
}
734
729
730
+ #[ derive( Clone , Copy ) ]
731
+ pub ( crate ) struct DocCoverage {
732
+ /// The total items that could be documented in the current crate, used to calculate
733
+ /// documentation coverage.
734
+ pub ( crate ) total_items : i32 ,
735
+ /// The items of the crate that are documented, used to calculate documentation coverage.
736
+ pub ( crate ) documented_items : i32 ,
737
+ }
738
+
735
739
pub ( crate ) struct BuildResult {
736
740
pub ( crate ) rustc_version : String ,
737
741
pub ( crate ) docsrs_version : String ,
738
742
pub ( crate ) build_log : String ,
739
743
pub ( crate ) successful : bool ,
740
- /// The total items that could be documented in the current crate, used to calculate
741
- /// documentation coverage.
742
- pub ( crate ) total_items : Option < i32 > ,
743
- /// The items of the crate that are documented, used to calculate documentation coverage.
744
- pub ( crate ) documented_items : Option < i32 > ,
744
+ pub ( crate ) doc_coverage : Option < DocCoverage > ,
745
745
}
0 commit comments