From 5efe083ddca3bfa09e583ae7396f8af8c52b43eb Mon Sep 17 00:00:00 2001 From: Tobias Bucher Date: Fri, 15 Apr 2016 17:58:59 +0200 Subject: [PATCH] Add `Default` implementation for `&CStr` and `CString` --- src/libstd/ffi/c_str.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs index 52d7bb128d5..fbc8886ce8f 100644 --- a/src/libstd/ffi/c_str.rs +++ b/src/libstd/ffi/c_str.rs @@ -326,6 +326,22 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { } } +#[stable(feature = "cstr_default", since = "1.10.0")] +impl<'a> Default for &'a CStr { + fn default() -> &'a CStr { + static SLICE: &'static [c_char] = &[0]; + unsafe { CStr::from_ptr(SLICE.as_ptr()) } + } +} + +#[stable(feature = "cstr_default", since = "1.10.0")] +impl Default for CString { + fn default() -> CString { + let a: &CStr = Default::default(); + a.to_owned() + } +} + #[stable(feature = "cstr_borrow", since = "1.3.0")] impl Borrow for CString { fn borrow(&self) -> &CStr { self } -- 2.44.0