Add `Default` implementation for `&CStr` and `CString`

This commit is contained in:
Tobias Bucher 2016-04-15 17:58:59 +02:00
parent 525aa61022
commit 5efe083ddc
1 changed files with 16 additions and 0 deletions

View File

@ -326,6 +326,22 @@ impl fmt::Debug for CStr {
}
}
#[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<CStr> for CString {
fn borrow(&self) -> &CStr { self }