@@ -33,7 +33,7 @@ pub mod owned {
3333 pub host : Option < String > ,
3434 pub port : Option < u16 > ,
3535 pub path : Vec < u8 > ,
36- pub expand_user : Option < UserExpansion > ,
36+ pub expansion : Option < UserExpansion > ,
3737 }
3838
3939 impl Default for Url {
@@ -44,7 +44,7 @@ pub mod owned {
4444 host : None ,
4545 port : None ,
4646 path : Vec :: new ( ) ,
47- expand_user : None ,
47+ expansion : None ,
4848 }
4949 }
5050 }
@@ -60,7 +60,7 @@ pub mod owned {
6060 }
6161 path. components ( ) . skip ( 1 ) . collect :: < PathBuf > ( ) . into ( )
6262 }
63- match self . expand_user . as_ref ( ) {
63+ match self . expansion . as_ref ( ) {
6464 Some ( user) => home_for_user ( user)
6565 . and_then ( |base| self . path . to_path ( ) . ok ( ) . map ( |path| base. join ( make_relative ( path) ) ) ) ,
6666 None => self . path . to_path ( ) . ok ( ) . map ( ToOwned :: to_owned) ,
@@ -72,6 +72,23 @@ pub mod owned {
7272#[ doc( inline) ]
7373pub use owned:: Url as Owned ;
7474
75+ #[ cfg( feature = "expand-path" ) ]
76+ mod expand_user {
77+ use crate :: owned:: { Url , UserExpansion } ;
78+ use std:: path:: PathBuf ;
79+
80+ impl Url {
81+ pub fn expand_user ( & self ) -> Option < PathBuf > {
82+ self . expand_path_with ( |user| match user {
83+ UserExpansion :: Current => home:: home_dir ( ) ,
84+ UserExpansion :: Name ( user) => {
85+ home:: home_dir ( ) . and_then ( |home| home. parent ( ) . map ( |home_dirs| home_dirs. join ( user) ) )
86+ }
87+ } )
88+ }
89+ }
90+ }
91+
7592pub mod parse;
7693#[ doc( inline) ]
7794pub use parse:: parse;
0 commit comments