@@ -380,45 +380,36 @@ pub(crate) async fn rustdoc_redirector_handler(
380380/// small wrapper around CrateDetails to limit serialized fields we hand
381381/// to the template.
382382/// Mostly to know what we have to serialize into the etag.
383- pub struct LimitedCrateDetails ( CrateDetails ) ;
384-
385- impl From < CrateDetails > for LimitedCrateDetails {
386- fn from ( value : CrateDetails ) -> Self {
387- Self ( value)
388- }
383+ pub struct LimitedCrateDetails {
384+ parsed_license : Option < Vec < licenses:: LicenseSegment > > ,
385+ homepage_url : Option < String > ,
386+ documentation_url : Option < String > ,
387+ repository_url : Option < String > ,
388+ owners : Vec < ( String , String , OwnerKind ) > ,
389+ dependencies : Vec < Dependency > ,
390+ total_items : Option < i32 > ,
391+ documented_items : Option < i32 > ,
389392}
390393
391- impl LimitedCrateDetails {
392- pub fn parsed_license ( & self ) -> Option < & [ licenses:: LicenseSegment ] > {
393- self . 0 . parsed_license . as_deref ( )
394- }
395-
396- pub fn homepage_url ( & self ) -> Option < & str > {
397- self . 0 . homepage_url . as_deref ( )
398- }
399-
400- pub fn documentation_url ( & self ) -> Option < & str > {
401- self . 0 . documentation_url . as_deref ( )
402- }
403-
404- pub fn repository_url ( & self ) -> Option < & str > {
405- self . 0 . repository_url . as_deref ( )
406- }
407-
408- pub fn owners ( & self ) -> & [ ( String , String , OwnerKind ) ] {
409- self . 0 . owners . as_ref ( )
410- }
411-
412- pub fn dependencies ( & self ) -> & [ Dependency ] {
413- self . 0 . dependencies . as_ref ( )
414- }
415-
416- pub fn total_items ( & self ) -> Option < i32 > {
417- self . 0 . total_items
418- }
419-
420- pub fn documented_items ( & self ) -> Option < i32 > {
421- self . 0 . documented_items
394+ impl From < CrateDetails > for LimitedCrateDetails {
395+ fn from ( mut value : CrateDetails ) -> Self {
396+ let parsed_license = std:: mem:: take ( & mut value. parsed_license ) ;
397+ let homepage_url = std:: mem:: take ( & mut value. homepage_url ) ;
398+ let documentation_url = std:: mem:: take ( & mut value. documentation_url ) ;
399+ let repository_url = std:: mem:: take ( & mut value. repository_url ) ;
400+ let owners = std:: mem:: take ( & mut value. owners ) ;
401+ let dependencies = std:: mem:: take ( & mut value. dependencies ) ;
402+
403+ Self {
404+ total_items : value. total_items ,
405+ documented_items : value. documented_items ,
406+ parsed_license,
407+ homepage_url,
408+ documentation_url,
409+ repository_url,
410+ owners,
411+ dependencies,
412+ }
422413 }
423414}
424415
@@ -427,14 +418,14 @@ impl bincode::Encode for LimitedCrateDetails {
427418 & self ,
428419 encoder : & mut E ,
429420 ) -> Result < ( ) , bincode:: error:: EncodeError > {
430- self . parsed_license ( ) . encode ( encoder) ?;
431- self . homepage_url ( ) . encode ( encoder) ?;
432- self . documentation_url ( ) . encode ( encoder) ?;
433- self . repository_url ( ) . encode ( encoder) ?;
434- self . owners ( ) . encode ( encoder) ?;
435- self . dependencies ( ) . encode ( encoder) ?;
436- self . total_items ( ) . encode ( encoder) ?;
437- self . documented_items ( ) . encode ( encoder) ?;
421+ self . parsed_license . encode ( encoder) ?;
422+ self . homepage_url . encode ( encoder) ?;
423+ self . documentation_url . encode ( encoder) ?;
424+ self . repository_url . encode ( encoder) ?;
425+ self . owners . encode ( encoder) ?;
426+ self . dependencies . encode ( encoder) ?;
427+ self . total_items . encode ( encoder) ?;
428+ self . documented_items . encode ( encoder) ?;
438429 Ok ( ( ) )
439430 }
440431}
0 commit comments