1
+ use std:: borrow:: Cow ;
1
2
use std:: env:: consts:: EXE_SUFFIX ;
2
3
use std:: fmt;
3
4
use std:: io:: Write ;
@@ -1425,7 +1426,7 @@ macro_rules! docs_data {
1425
1426
}
1426
1427
1427
1428
impl DocPage {
1428
- fn path ( & self ) -> Option <& ' static str > {
1429
+ fn path_str ( & self ) -> Option <& ' static str > {
1429
1430
$( if self . $ident { return Some ( $path) ; } ) +
1430
1431
None
1431
1432
}
@@ -1463,8 +1464,12 @@ docs_data![
1463
1464
] ;
1464
1465
1465
1466
impl DocPage {
1467
+ fn path ( & self ) -> Option < & ' static Path > {
1468
+ self . path_str ( ) . map ( Path :: new)
1469
+ }
1470
+
1466
1471
fn name ( & self ) -> Option < & ' static str > {
1467
- Some ( self . path ( ) ?. rsplit_once ( '/' ) ?. 0 )
1472
+ Some ( self . path_str ( ) ?. rsplit_once ( '/' ) ?. 0 )
1468
1473
}
1469
1474
}
1470
1475
@@ -1502,18 +1507,18 @@ async fn doc(
1502
1507
}
1503
1508
} ;
1504
1509
1505
- let topical_path: PathBuf ;
1506
-
1507
1510
let doc_url = if let Some ( topic) = topic {
1508
- topical_path = topical_doc:: local_path ( & toolchain. doc_path ( "" ) . unwrap ( ) , topic) ?;
1509
- topical_path. to_str ( ) . unwrap ( )
1511
+ Cow :: Owned ( topical_doc:: local_path (
1512
+ & toolchain. doc_path ( "" ) . unwrap ( ) ,
1513
+ topic,
1514
+ ) ?)
1510
1515
} else {
1511
1516
topic = doc_page. name ( ) ;
1512
- doc_page. path ( ) . unwrap_or ( "index.html" )
1517
+ Cow :: Borrowed ( doc_page. path ( ) . unwrap_or ( Path :: new ( "index.html" ) ) )
1513
1518
} ;
1514
1519
1515
1520
if path_only {
1516
- let doc_path = toolchain. doc_path ( doc_url) ?;
1521
+ let doc_path = toolchain. doc_path ( & doc_url) ?;
1517
1522
writeln ! ( cfg. process. stdout( ) . lock( ) , "{}" , doc_path. display( ) ) ?;
1518
1523
return Ok ( utils:: ExitCode ( 0 ) ) ;
1519
1524
}
@@ -1526,7 +1531,7 @@ async fn doc(
1526
1531
} else {
1527
1532
writeln ! ( cfg. process. stderr( ) . lock( ) , "Opening docs in your browser" ) ?;
1528
1533
}
1529
- toolchain. open_docs ( doc_url) ?;
1534
+ toolchain. open_docs ( & doc_url) ?;
1530
1535
Ok ( utils:: ExitCode ( 0 ) )
1531
1536
}
1532
1537
0 commit comments