@@ -1415,12 +1415,9 @@ fn normalize(package_root: &Path,
1415
1415
1416
1416
if let Some ( ref lib) = * lib {
1417
1417
lib_target ( & mut ret, lib) ;
1418
- bin_targets ( & mut ret, bins,
1419
- & mut |bin| inferred_bin_path ( bin, package_root, true , bins. len ( ) ) ) ;
1420
- } else if bins. len ( ) > 0 {
1421
- bin_targets ( & mut ret, bins,
1422
- & mut |bin| inferred_bin_path ( bin, package_root, false , bins. len ( ) ) ) ;
1423
1418
}
1419
+ bin_targets ( & mut ret, bins,
1420
+ & mut |bin| inferred_bin_path ( bin, lib. is_some ( ) , package_root, bins. len ( ) ) ) ;
1424
1421
1425
1422
1426
1423
if let Some ( custom_build) = custom_build {
@@ -1443,32 +1440,9 @@ fn normalize(package_root: &Path,
1443
1440
}
1444
1441
1445
1442
fn inferred_bin_path ( bin : & TomlBinTarget ,
1443
+ has_lib : bool ,
1446
1444
package_root : & Path ,
1447
- lib : bool ,
1448
1445
bin_len : usize ) -> PathBuf {
1449
- // we have a lib with multiple bins, so the bins are expected to be located
1450
- // inside src/bin
1451
- if lib && bin_len > 1 {
1452
- return Path :: new ( "src" ) . join ( "bin" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) )
1453
- . to_path_buf ( )
1454
- }
1455
-
1456
- // we have a lib with one bin, so it's either src/main.rs, src/bin/foo.rs or
1457
- // src/bin/main.rs
1458
- if lib && bin_len == 1 {
1459
- let path = Path :: new ( "src" ) . join ( & format ! ( "main.rs" ) ) ;
1460
- if package_root. join ( & path) . exists ( ) {
1461
- return path. to_path_buf ( )
1462
- }
1463
-
1464
- let path = Path :: new ( "src" ) . join ( "bin" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
1465
- if package_root. join ( & path) . exists ( ) {
1466
- return path. to_path_buf ( )
1467
- }
1468
-
1469
- return Path :: new ( "src" ) . join ( "bin" ) . join ( & format ! ( "main.rs" ) ) . to_path_buf ( )
1470
- }
1471
-
1472
1446
// here we have a single bin, so it may be located in src/main.rs, src/foo.rs,
1473
1447
// srb/bin/foo.rs or src/bin/main.rs
1474
1448
if bin_len == 1 {
@@ -1477,9 +1451,11 @@ fn inferred_bin_path(bin: &TomlBinTarget,
1477
1451
return path. to_path_buf ( )
1478
1452
}
1479
1453
1480
- let path = Path :: new ( "src" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
1481
- if package_root. join ( & path) . exists ( ) {
1482
- return path. to_path_buf ( )
1454
+ if !has_lib {
1455
+ let path = Path :: new ( "src" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
1456
+ if package_root. join ( & path) . exists ( ) {
1457
+ return path. to_path_buf ( )
1458
+ }
1483
1459
}
1484
1460
1485
1461
let path = Path :: new ( "src" ) . join ( "bin" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
@@ -1496,9 +1472,11 @@ fn inferred_bin_path(bin: &TomlBinTarget,
1496
1472
return path. to_path_buf ( )
1497
1473
}
1498
1474
1499
- let path = Path :: new ( "src" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
1500
- if package_root. join ( & path) . exists ( ) {
1501
- return path. to_path_buf ( )
1475
+ if !has_lib {
1476
+ let path = Path :: new ( "src" ) . join ( & format ! ( "{}.rs" , bin. name( ) ) ) ;
1477
+ if package_root. join ( & path) . exists ( ) {
1478
+ return path. to_path_buf ( )
1479
+ }
1502
1480
}
1503
1481
1504
1482
let path = Path :: new ( "src" ) . join ( "bin" ) . join ( & format ! ( "main.rs" ) ) ;
0 commit comments