From b40163beb925b176fdb570e4f4998ab9919e77a4 Mon Sep 17 00:00:00 2001 From: Ben S Date: Tue, 13 Oct 2015 13:06:00 +0100 Subject: Make the Metadata struct Clone This commit adds #[derive(Clone)] to std::fs::Metadata, making that struct cloneable. Although the exact contents of that struct differ between OSes, they all have it contain only value types, meaning that the data can be re-used without repercussions. It also adds #[derive(Clone)] to every type used by that struct across all OSes, including the various Unix `stat` structs and Windows's `WIN32_FILE_ATTRIBUTE_DATA`. --- src/libstd/sys/unix/fs.rs | 1 + src/libstd/sys/windows/c.rs | 1 + src/libstd/sys/windows/fs.rs | 1 + 3 files changed, 3 insertions(+) (limited to 'src/libstd/sys') diff --git a/src/libstd/sys/unix/fs.rs b/src/libstd/sys/unix/fs.rs index 0eebe5af919..d0c027ddad6 100644 --- a/src/libstd/sys/unix/fs.rs +++ b/src/libstd/sys/unix/fs.rs @@ -27,6 +27,7 @@ use vec::Vec; pub struct File(FileDesc); +#[derive(Clone)] pub struct FileAttr { stat: raw::stat, } diff --git a/src/libstd/sys/windows/c.rs b/src/libstd/sys/windows/c.rs index 30c7e5a52b7..bac5b47eb1a 100644 --- a/src/libstd/sys/windows/c.rs +++ b/src/libstd/sys/windows/c.rs @@ -182,6 +182,7 @@ pub struct CONSOLE_SCREEN_BUFFER_INFO { pub type PCONSOLE_SCREEN_BUFFER_INFO = *mut CONSOLE_SCREEN_BUFFER_INFO; #[repr(C)] +#[derive(Clone)] pub struct WIN32_FILE_ATTRIBUTE_DATA { pub dwFileAttributes: libc::DWORD, pub ftCreationTime: libc::FILETIME, diff --git a/src/libstd/sys/windows/fs.rs b/src/libstd/sys/windows/fs.rs index 721e259823a..fb2456564eb 100644 --- a/src/libstd/sys/windows/fs.rs +++ b/src/libstd/sys/windows/fs.rs @@ -27,6 +27,7 @@ use vec::Vec; pub struct File { handle: Handle } +#[derive(Clone)] pub struct FileAttr { data: c::WIN32_FILE_ATTRIBUTE_DATA, reparse_tag: libc::DWORD, -- cgit 1.4.1-3-g733a5