@@ -1644,43 +1644,36 @@ impl InheritableFields {
1644
1644
self . ws_root = ws_root;
1645
1645
}
1646
1646
1647
+ /// Gets a workspace dependency with the `name`.
1647
1648
pub fn get_dependency ( & self , name : & str , package_root : & Path ) -> CargoResult < TomlDependency > {
1648
- self . dependencies . clone ( ) . map_or (
1649
- Err ( anyhow ! ( "`workspace.dependencies` was not defined" ) ) ,
1650
- |deps| {
1651
- deps. get ( name) . map_or (
1652
- Err ( anyhow ! (
1653
- "`dependency.{}` was not found in `workspace.dependencies`" ,
1654
- name
1655
- ) ) ,
1656
- |dep| {
1657
- let mut dep = dep. clone ( ) ;
1658
- if let TomlDependency :: Detailed ( detailed) = & mut dep {
1659
- detailed. resolve_path ( name, self . ws_root ( ) , package_root) ?
1660
- }
1661
- Ok ( dep)
1662
- } ,
1663
- )
1664
- } ,
1665
- )
1649
+ let Some ( deps) = & self . dependencies else {
1650
+ bail ! ( "`workspace.dependencies` was not defined" ) ;
1651
+ } ;
1652
+ let Some ( dep) = deps. get ( name) else {
1653
+ bail ! ( "`dependency.{name}` was not found in `workspace.dependencies`" ) ;
1654
+ } ;
1655
+ let mut dep = dep. clone ( ) ;
1656
+ if let TomlDependency :: Detailed ( detailed) = & mut dep {
1657
+ detailed. resolve_path ( name, self . ws_root ( ) , package_root) ?;
1658
+ }
1659
+ Ok ( dep)
1666
1660
}
1667
1661
1662
+ /// Gets the field `workspace.package.readme`.
1668
1663
pub fn readme ( & self , package_root : & Path ) -> CargoResult < StringOrBool > {
1669
- readme_for_package ( self . ws_root . as_path ( ) , self . readme . clone ( ) ) . map_or (
1670
- Err ( anyhow ! ( "`workspace.package.readme` was not defined" ) ) ,
1671
- |readme| {
1672
- let rel_path =
1673
- resolve_relative_path ( "readme" , & self . ws_root , package_root, & readme) ?;
1674
- Ok ( StringOrBool :: String ( rel_path) )
1675
- } ,
1676
- )
1664
+ let Some ( readme) = readme_for_package ( self . ws_root . as_path ( ) , self . readme . as_ref ( ) ) else {
1665
+ bail ! ( "`workspace.package.readme` was not defined" ) ;
1666
+ } ;
1667
+ resolve_relative_path ( "readme" , & self . ws_root , package_root, & readme)
1668
+ . map ( StringOrBool :: String )
1677
1669
}
1678
1670
1671
+ /// Gets the field `workspace.package.license-file`.
1679
1672
pub fn license_file ( & self , package_root : & Path ) -> CargoResult < String > {
1680
- self . license_file . clone ( ) . map_or (
1681
- Err ( anyhow ! ( "`workspace.package.license_file ` was not defined" ) ) ,
1682
- |d| resolve_relative_path ( "license-file" , & self . ws_root , package_root , & d ) ,
1683
- )
1673
+ let Some ( license_file ) = & self . license_file else {
1674
+ bail ! ( "`workspace.package.license-file ` was not defined" ) ;
1675
+ } ;
1676
+ resolve_relative_path ( "license-file" , & self . ws_root , package_root , license_file )
1684
1677
}
1685
1678
1686
1679
pub fn ws_root ( & self ) -> & PathBuf {
@@ -2382,7 +2375,8 @@ impl TomlManifest {
2382
2375
. readme
2383
2376
. clone ( )
2384
2377
. map ( |mw| mw. resolve ( "readme" , || inherit ( ) ?. readme ( package_root) ) )
2385
- . transpose ( ) ?,
2378
+ . transpose ( ) ?
2379
+ . as_ref ( ) ,
2386
2380
) ,
2387
2381
authors : package
2388
2382
. authors
@@ -2980,7 +2974,7 @@ fn inheritable_from_path(
2980
2974
}
2981
2975
2982
2976
/// Returns the name of the README file for a [`TomlPackage`].
2983
- pub fn readme_for_package ( package_root : & Path , readme : Option < StringOrBool > ) -> Option < String > {
2977
+ pub fn readme_for_package ( package_root : & Path , readme : Option < & StringOrBool > ) -> Option < String > {
2984
2978
match & readme {
2985
2979
None => default_readme_from_package_root ( package_root) ,
2986
2980
Some ( value) => match value {
0 commit comments