mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Rollup merge of #22742 - alexcrichton:issue-22737, r=aturon
If the filename for a path is `None` then we know that the creation of the parent directory created the whole path so there's no need to retry the call to `create_dir`. Closes #22737
This commit is contained in:
commit
ecaf74ab3b
@ -544,7 +544,14 @@ pub fn create_dir_all<P: AsPath + ?Sized>(path: &P) -> io::Result<()> {
|
|||||||
Some(p) if p != path => try!(create_dir_all(p)),
|
Some(p) if p != path => try!(create_dir_all(p)),
|
||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
create_dir(path)
|
// If the file name of the given `path` is blank then the creation of the
|
||||||
|
// parent directory will have taken care of the whole path for us, so we're
|
||||||
|
// good to go.
|
||||||
|
if path.file_name().is_none() {
|
||||||
|
Ok(())
|
||||||
|
} else {
|
||||||
|
create_dir(path)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Remove an existing, empty directory
|
/// Remove an existing, empty directory
|
||||||
@ -1504,4 +1511,11 @@ mod tests {
|
|||||||
check!(fs::set_permissions(&path, perm));
|
check!(fs::set_permissions(&path, perm));
|
||||||
check!(fs::remove_file(&path));
|
check!(fs::remove_file(&path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn mkdir_trailing_slash() {
|
||||||
|
let tmpdir = tmpdir();
|
||||||
|
let path = tmpdir.join("file");
|
||||||
|
check!(fs::create_dir_all(&path.join("a/")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user