about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/ffi/c_str.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libstd/ffi/c_str.rs b/src/libstd/ffi/c_str.rs
index 6f7dc091897..3a3b51fd353 100644
--- a/src/libstd/ffi/c_str.rs
+++ b/src/libstd/ffi/c_str.rs
@@ -1,6 +1,7 @@
 use crate::ascii;
 use crate::borrow::{Borrow, Cow};
 use crate::cmp::Ordering;
+use crate::convert::TryFrom;
 use crate::error::Error;
 use crate::fmt::{self, Write};
 use crate::io;
@@ -853,6 +854,19 @@ impl From<Vec<NonZeroU8>> for CString {
     }
 }
 
+#[unstable(feature = "cstring_from_vec_with_nul", issue = "73179")]
+impl TryFrom<Vec<u8>> for CString {
+    type Error = FromBytesWithNulError;
+
+    /// See the document about [`from_vec_with_nul`] for more
+    /// informations about the behaviour of this method.
+    ///
+    /// [`from_vec_with_nul`]: struct.CString.html#method.from_vec_with_nul
+    fn try_from(value: Vec<u8>) -> Result<Self, Self::Error> {
+        Self::from_vec_with_nul(value)
+    }
+}
+
 #[stable(feature = "more_box_slice_clone", since = "1.29.0")]
 impl Clone for Box<CStr> {
     #[inline]