about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorAlexis Bourget <alexis.bourget@gmail.com>2020-06-10 23:13:45 +0200
committerAlexis Bourget <alexis.bourget@gmail.com>2020-06-11 00:36:55 +0200
commit7f3bb398fa90d68c737dd7e00a3813e0620ba472 (patch)
tree8bddaea69aa91c9b614b2ce8e7911f8c5f2d2846 /src/libstd
parentb03164e6679284b984437fe82092682cf7c984f8 (diff)
downloadrust-7f3bb398fa90d68c737dd7e00a3813e0620ba472.tar.gz
rust-7f3bb398fa90d68c737dd7e00a3813e0620ba472.zip
Add a TryFrom<Vec<u8>> impl that mirror from_vec_with_nul
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]