diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs
index a8f1fe7d46f90..4913fd78ca316 100644
--- a/src/librustdoc/html/render.rs
+++ b/src/librustdoc/html/render.rs
@@ -803,9 +803,7 @@ fn write_shared(cx: &Context,
fn render_sources(dst: &Path, scx: &mut SharedContext,
krate: clean::Crate) -> Result {
info!("emitting source files");
- let dst = dst.join("src");
- try_err!(mkdir(&dst), &dst);
- let dst = dst.join(&krate.name);
+ let dst = dst.join("src").join(&krate.name);
try_err!(mkdir(&dst), &dst);
let mut folder = SourceCollector {
dst: dst,
@@ -823,11 +821,7 @@ fn write(dst: PathBuf, contents: &[u8]) -> Result<(), Error> {
/// Makes a directory on the filesystem, failing the thread if an error occurs and
/// skipping if the directory already exists.
fn mkdir(path: &Path) -> io::Result<()> {
- if !path.exists() {
- fs::create_dir(path)
- } else {
- Ok(())
- }
+ fs::create_dir_all(path)
}
/// Returns a documentation-level item type from the item.