From 08eaf07dbc408fdd3de0374fbef7d142777df657 Mon Sep 17 00:00:00 2001 From: Wangshan Lu Date: Tue, 22 Mar 2016 00:45:08 +0800 Subject: [PATCH 1/3] Implement Default for OsString --- src/libstd/ffi/os_str.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libstd/ffi/os_str.rs b/src/libstd/ffi/os_str.rs index 46f2d3a64181b..246f868e6cbc1 100644 --- a/src/libstd/ffi/os_str.rs +++ b/src/libstd/ffi/os_str.rs @@ -173,6 +173,14 @@ impl ops::Deref for OsString { } } +#[stable(feature = "rust1", since = "1.9.0")] +impl Default for OsString { + #[inline] + fn default() -> OsString { + OsString::new() + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl Debug for OsString { fn fmt(&self, formatter: &mut fmt::Formatter) -> Result<(), fmt::Error> { @@ -554,6 +562,12 @@ mod tests { assert!(os_string.capacity() >= 33) } + #[test] + fn test_os_string_default() { + let os_string: OsString = Default::default(); + assert_eq!("", &os_string); + } + #[test] fn test_os_str_is_empty() { let mut os_string = OsString::new(); From aa5afb0c1737d39f28a212cdb5ebcb02ffd8dea8 Mon Sep 17 00:00:00 2001 From: Wangshan Lu Date: Tue, 22 Mar 2016 00:45:36 +0800 Subject: [PATCH 2/3] Implement Default for OsStr --- src/libstd/ffi/os_str.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libstd/ffi/os_str.rs b/src/libstd/ffi/os_str.rs index 246f868e6cbc1..e50be34e53b15 100644 --- a/src/libstd/ffi/os_str.rs +++ b/src/libstd/ffi/os_str.rs @@ -310,6 +310,14 @@ impl OsStr { } } +#[stable(feature = "rust1", since = "1.9.0")] +impl<'a> Default for &'a OsStr { + #[inline] + fn default() -> &'a OsStr { + "" + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl PartialEq for OsStr { fn eq(&self, other: &OsStr) -> bool { @@ -591,4 +599,10 @@ mod tests { os_string.clear(); assert_eq!(0, os_string.len()); } + + #[test] + fn test_os_str_default() { + let os_str: &OsStr = Default::default(); + assert_eq!("", os_str); + } } From b5b1d0685e54dc9228757ada714551d7eed121f1 Mon Sep 17 00:00:00 2001 From: Wangshan Lu Date: Tue, 22 Mar 2016 07:38:44 +0800 Subject: [PATCH 3/3] Fix Default for OsString/OsStr --- src/libstd/ffi/os_str.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libstd/ffi/os_str.rs b/src/libstd/ffi/os_str.rs index e50be34e53b15..de840457a01f4 100644 --- a/src/libstd/ffi/os_str.rs +++ b/src/libstd/ffi/os_str.rs @@ -173,7 +173,7 @@ impl ops::Deref for OsString { } } -#[stable(feature = "rust1", since = "1.9.0")] +#[stable(feature = "osstring_default", since = "1.9.0")] impl Default for OsString { #[inline] fn default() -> OsString { @@ -310,11 +310,11 @@ impl OsStr { } } -#[stable(feature = "rust1", since = "1.9.0")] +#[stable(feature = "osstring_default", since = "1.9.0")] impl<'a> Default for &'a OsStr { #[inline] fn default() -> &'a OsStr { - "" + OsStr::new("") } }